From f6851e3b12083e63801f16f98c59ce3988165467 Mon Sep 17 00:00:00 2001 From: Matt Cowley Date: Thu, 6 Oct 2022 19:17:34 +0100 Subject: [PATCH] feat: Switch to the v2 Twitter API (#207) * Untested switch to v2 API * Update the first test to expect v2 API calls * Update command line tests with media * Update push front matter tests * Update remaining push tests * Prettier * Quote tweets contain a t.co link in the response text * Switch to maintained ncc package * build with new Twitter + ncc libs * Update documentation based on current Twitter flow * Remove user/account ID from workflow * Bump release workflow to v3 --- .github/workflows/release.yml | 2 +- .github/workflows/twitter-together.yml | 2 - README.md | 10 +- dist/index.js | 85993 ++++++---------- docs/01-create-twitter-app.md | 105 +- docs/02-create-twitter-together-workflow.md | 2 - ...apply-for-access-to-the-twitter-ads-api.md | 139 - docs/adds-api-application-form-01.png | Bin 379230 -> 0 bytes docs/twitter-01-create-an-app.png | Bin 228085 -> 0 bytes ....png => twitter-01-repository-secrets.png} | Bin ...itter-02-sign-up-for-developer-account.png | Bin 292264 -> 0 bytes docs/twitter-03-create-app.png | Bin 347551 -> 0 bytes docs/twitter-04-keys-and-tokens.png | Bin 302244 -> 0 bytes lib/common/parse-tweet-file-content.js | 2 + lib/common/tweet.js | 207 +- lib/index.js | 8 +- package-lock.json | 764 +- package.json | 4 +- .../test.js | 96 +- .../test.js | 96 +- test/command-line-has-tweet/test.js | 25 +- .../test.js | 94 +- .../test.js | 41 +- .../test.js | 28 +- .../test.js | 28 +- .../test.js | 47 +- test/push-main-has-tweet-with-poll/test.js | 48 +- test/push-main-has-tweet-with-thread/test.js | 41 +- .../test.js | 43 +- test/push-main-has-tweet/test.js | 23 +- 30 files changed, 30636 insertions(+), 57212 deletions(-) delete mode 100644 docs/03-apply-for-access-to-the-twitter-ads-api.md delete mode 100644 docs/adds-api-application-form-01.png delete mode 100644 docs/twitter-01-create-an-app.png rename docs/{twitter-05-repository-secrets.png => twitter-01-repository-secrets.png} (100%) delete mode 100644 docs/twitter-02-sign-up-for-developer-account.png delete mode 100644 docs/twitter-03-create-app.png delete mode 100644 docs/twitter-04-keys-and-tokens.png diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d6e596ad..31fad20e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,6 @@ jobs: - run: >- git push --force https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git - HEAD:refs/heads/v2 + HEAD:refs/heads/v3 env: GITHUB_TOKEN: ${{ secrets.GR2M_PAT_FOR_SEMANTIC_RELEASE }} diff --git a/.github/workflows/twitter-together.yml b/.github/workflows/twitter-together.yml index c72553d1..15b4884f 100644 --- a/.github/workflows/twitter-together.yml +++ b/.github/workflows/twitter-together.yml @@ -38,5 +38,3 @@ jobs: TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }} TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }} - TWITTER_USER_ID: 1099774878213783553 - TWITTER_ACCOUNT_ID: 18ce551qf6o diff --git a/README.md b/README.md index 73a1f081..5292aa04 100644 --- a/README.md +++ b/README.md @@ -36,13 +36,17 @@ You can submit a tweet to this repository to see the magic happen. Please follow ## Twitter API compatibility -The Twitter Ads API we currently use is the `v8` version. +Twitter, Together uses the v2 Twitter API for most functionality. +It makes use of the v1 API for media uploads, as there is no v2 equivalent endpoint. + +Essentials level Twitter access should grant access to all endpoints Twitter, Together uses. ## Setup -Unless you wish to contribute to this project, you don't need to fork this repository. Instead, you can make use of this GitHub Action from the comfort of your own repository (either a new one, or one you already have) by creating a GitHub Actions workflow following these steps: +Unless you wish to contribute to this project, you don't need to fork this repository. +Instead, you can make use of this GitHub Action from the comfort of your own repository (either a new one, or one you already have) by creating a GitHub Actions workflow following these steps: -1. [Create a twitter app](docs/01-create-twitter-app.md) with your shared twitter account and store the credentials as `TWITTER_API_KEY`, `TWITTER_API_SECRET_KEY`, `TWITTER_ACCESS_TOKEN` and `TWITTER_ACCESS_TOKEN_SECRET` in your repository’s secrets settings. +1. [Create a Twitter app](docs/01-create-twitter-app.md) with your shared Twitter account and store the credentials as `TWITTER_API_KEY`, `TWITTER_API_SECRET_KEY`, `TWITTER_ACCESS_TOKEN` and `TWITTER_ACCESS_TOKEN_SECRET` in your repository’s secrets settings. 2. [Create a `.github/workflows/twitter-together.yml` file](docs/02-create-twitter-together-workflow.md) with the content below. Make sure to replace `'main'` if you changed your repository's default branch. ```yml diff --git a/dist/index.js b/dist/index.js index d13ffb93..a63b63c8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,1110 +1,866 @@ -module.exports = -/******/ (function(modules, runtime) { // webpackBootstrap -/******/ "use strict"; -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ __webpack_require__.ab = __dirname + "/"; -/******/ -/******/ // the startup function -/******/ function startup() { -/******/ // Load entry module and return exports -/******/ return __webpack_require__(526); -/******/ }; -/******/ -/******/ // run startup -/******/ return startup(); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */, -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ +/***/ 5935: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -__webpack_require__(493); +module.exports = parseTweetFileContent; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var atSigns = /[@@]/; -var _default = atSigns; -exports["default"] = _default; -module.exports = exports.default; +const EOL = (__nccwpck_require__(2037).EOL); -/***/ }), -/* 2 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +const { existsSync } = __nccwpck_require__(7147); +const { join } = __nccwpck_require__(1017); +const { parseTweet } = __nccwpck_require__(6223); +const { load } = __nccwpck_require__(1917); -var util = __webpack_require__(669); -var Stream = __webpack_require__(413).Stream; -var DelayedStream = __webpack_require__(152); +const OPTION_REGEX = /^\(\s?\)\s+/; +const FRONT_MATTER_REGEX = new RegExp( + `^---[ \t]*${EOL}([\\s\\S]*?)${EOL}---[ \t]*(?:$|(?:${EOL})+)` +); -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; +function parseTweetFileContent(text, dir, isThread = false) { + text = text.trim(); - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util.inherits(CombinedStream, Stream); + const options = { + threadDelimiter: "---", + reply: null, + retweet: null, + media: [], + schedule: null, + poll: null, + thread: null, + }; -CombinedStream.create = function(options) { - var combinedStream = new this(); + // Extract front matter options + const frontMatterMatch = text.match(FRONT_MATTER_REGEX); + if (frontMatterMatch) { + text = text.slice(frontMatterMatch[0].length); + getOptionsFromFrontMatter(frontMatterMatch[1], options, dir); - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; + if (isThread) { + if (options.reply) + throw new Error("Cannot set a tweet to reply to when in a thread"); + } } - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); + // Handle threading + if (options.threadDelimiter) { + const threadIdx = text.match( + new RegExp(`(?:${EOL})+${options.threadDelimiter}[ \t]*(?:${EOL})+`) + ); + if (threadIdx) { + const threadText = text.slice(threadIdx.index + threadIdx[0].length); + text = text.slice(0, threadIdx.index); - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; + // Each item can have front matter, as we only split one thread delimiter at a time + options.thread = parseTweetFileContent(threadText, dir, true); } + } - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); + // Extract in-content options + if (!options.poll) { + const pollOptions = []; + let lastLine; + while ((lastLine = getlastLineMatchingPollOption(text))) { + pollOptions.push(lastLine.replace(OPTION_REGEX, "")); + text = withLastLineRemoved(text); } + if (pollOptions.length) options.poll = pollOptions.reverse(); } - this._streams.push(stream); - return this; -}; + // Validate options + validateOptions(options, text, dir); -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; + // Parse tweet if has text + const parsed = text ? parseTweet(text) : { valid: true, weightedLength: 0 }; + if (!parsed.valid) + throw new Error( + `Tweet exceeds maximum length of 280 characters by ${ + parsed.weightedLength - 280 + } characters` + ); + + // TODO: Support schedule from options + return { + poll: options.poll, + media: options.media, + thread: options.thread, + reply: options.reply, + retweet: options.retweet, + text, + ...parsed, + }; +} -CombinedStream.prototype._getNext = function() { - this._currentStream = null; +function validateOptions(options, text, dir) { + if (options.retweet && !text && options.poll) + throw new Error("Cannot attach a poll to a retweet"); - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } + if (options.retweet && !text && options.reply) + throw new Error("Cannot reply to a tweet with a retweet"); - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; + if (options.retweet && !text && options.thread) + throw new Error("Cannot create a thread from a retweet"); -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); + if (options.retweet && !text && options.media && options.media.length) + throw new Error("Cannot attach media to a retweet"); + if (options.poll && options.poll.length > 4) + throw new Error( + `Polls cannot have more than four options, found ${options.poll.length} options` + ); - if (typeof stream == 'undefined') { - this.end(); - return; - } + if (options.poll && options.poll.length < 2) + throw new Error( + `Polls must have at least two options, found ${options.poll.length} options` + ); - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } + if (options.media) { + for (const media of options.media) { + if (media.file.indexOf(join(dir, "media")) !== 0) + throw new Error(`Media file should be within the media directory`); + + if (!existsSync(media.file)) + throw new Error(`Media file ${media.file} does not exist`); - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); + if (media.alt && media.alt.length > 1000) + throw new Error( + `Media alt text must be 1000 characters or less, found length ${media.alt.length}` + ); } + } +} - this._pipeNext(stream); - }.bind(this)); -}; +function getOptionsFromFrontMatter(frontMatter, options, dir) { + const parsedFrontMatter = load(frontMatter); + if (typeof parsedFrontMatter !== "object" || !parsedFrontMatter) return; + + if (typeof parsedFrontMatter["thread-delimiter"] === "string") + options.threadDelimiter = parsedFrontMatter["thread-delimiter"]; + if (typeof parsedFrontMatter.reply === "string") + options.reply = parsedFrontMatter.reply; + if (typeof parsedFrontMatter.retweet === "string") + options.retweet = parsedFrontMatter.retweet; -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; + if (Array.isArray(parsedFrontMatter.media)) + options.media = parsedFrontMatter.media.reduce((arr, item) => { + if (item && typeof item === "object" && typeof item.file === "string") + arr.push({ + file: join(dir, "media", item.file), + alt: typeof item.alt !== "string" ? null : item.alt, + }); + return arr; + }, []); - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; + if (typeof parsedFrontMatter.schedule === "string") { + const schedule = new Date(parsedFrontMatter.schedule); + if (!isNaN(schedule.getTime())) options.schedule = schedule; } - var value = stream; - this.write(value); - this._getNext(); -}; + if (Array.isArray(parsedFrontMatter.poll)) + options.poll = parsedFrontMatter.poll.reduce((arr, item) => { + if (typeof item === "string") arr.push(item); + return arr; + }, []); +} -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; +function getlastLineMatchingPollOption(text) { + const lines = text.trim().split(EOL); + const [lastLine] = lines.reverse(); + return OPTION_REGEX.test(lastLine) ? lastLine : null; +} -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; +function withLastLineRemoved(text) { + const lines = text.trim().split(EOL); + return lines + .slice(0, lines.length - 1) + .join(EOL) + .trim(); +} -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; +/***/ }), -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } +/***/ 2179: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; +module.exports = tweet; -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; +const { TwitterApi } = __nccwpck_require__(9360); +const mime = __nccwpck_require__(3583); -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; +const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; +async function tweet({ twitterCredentials }, tweetData, tweetFile) { + const client = new TwitterApi(twitterCredentials); -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; + const self = await client.v2.me(); + if (self.errors) throw self.errors; + + return handleTweet(client, self.data, tweetData, tweetFile); +} + +async function handleTweet(client, self, tweet, name) { + if (tweet.retweet && !tweet.text) { + // TODO: Should this throw if an invalid tweet is passed and there is no match? + const match = tweet.retweet.match(TWEET_REGEX); + if (match) return createRetweet(client, self, match[1]); } - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; + const tweetData = { + text: tweet.text, + }; -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; + if (tweet.poll) { + tweetData.poll = { + duration_minutes: 1440, + options: tweet.poll, + }; + } - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; + if (tweet.reply) { + // TODO: Should this throw if an invalid reply is passed and there is no match? + const match = tweet.reply.match(TWEET_REGEX); + if (match) { + tweetData.reply = { + in_reply_to_tweet_id: match[1], + }; } + } - self.dataSize += stream.dataSize; - }); + if (tweet.retweet) { + // TODO: Should this throw if an invalid tweet is passed and there is no match? + const match = tweet.retweet.match(TWEET_REGEX); + if (match) tweetData.quote_tweet_id = match[1]; + } - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; + if (tweet.media?.length) { + tweetData.media = { + media_ids: await Promise.all( + tweet.media.map((media) => createMedia(client, media)) + ), + }; } -}; -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; + const tweetResult = await createTweet(client, self, tweetData); + if (tweet.thread) { + tweetResult.thread = await handleTweet( + client, + self, + { ...tweet.thread, reply: tweetResult.url }, + name + ); + } -/***/ }), -/* 3 */, -/* 4 */ -/***/ (function(__unusedmodule, exports) { + return tweetResult; +} -"use strict"; +async function createMedia(client, { file, alt }) { + const mediaId = await client.v1.uploadMedia(file, { + mimeType: mime.lookup(file), + }); + if (alt) + await client.v1.createMediaMetadata(mediaId, { alt_text: { text: alt } }); + return mediaId; +} +async function createTweet(client, self, options) { + return client.v2.tweet(options).then((data) => { + if (data.errors) throw data.errors; + return { + text: data.data.text, + url: `https://twitter.com/${self.username}/status/${data.data.id}`, + }; + }); +} -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports.default = _default; +function createRetweet(client, self, id) { + return client.v2.retweet(self.id, id).then(async (data) => { + if (data.errors) throw data.errors; + if (!data.data.retweeted) throw new Error("Retweet failed"); -/***/ }), -/* 5 */ -/***/ (function(module) { + const other = await client.v2.singleTweet(id, { expansions: "author_id" }); + if (other.errors) throw other.errors; + const otherUser = other.includes.users.find( + (user) => user.id === other.data.author_id + ); -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); + return { + retweet: `https://twitter.com/${otherUser.username}/status/${id}`, + url: `https://twitter.com/${otherUser.username}/status/${id}`, // TODO: Twitter does not return the id of the retweet itself + }; + }); +} /***/ }), -/* 6 */, -/* 7 */, -/* 8 */, -/* 9 */ -/***/ (function(module) { -module.exports = false; - - -/***/ }), -/* 10 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 3138: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; -/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */ +module.exports = createCheckRun; +const { autoLink } = __nccwpck_require__(6223); +const parseTweetFileContent = __nccwpck_require__(5935); -var Punycode = __webpack_require__(213); +async function createCheckRun( + { octokit, payload, startedAt, toolkit, dir }, + newTweets +) { + const parsedTweets = newTweets.map((rawTweet) => { + try { + return parseTweetFileContent(rawTweet, dir); + } catch (error) { + return { + error: error.message, + valid: false, + text: rawTweet, + }; + } + }); + const allTweetsValid = parsedTweets.every((tweet) => tweet.valid); -var internals = {}; + // Check runs cannot be created if the pull request was created by a fork, + // so we just log out the result. + // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#permissions-for-the-github_token + if (payload.pull_request.head.repo.fork) { + for (const tweet of parsedTweets) { + if (tweet.valid) { + toolkit.info(`### ✅ Valid\n\n${tweet.text}`); + } else { + toolkit.info( + `### ❌ Invalid\n\n${tweet.text}\n\n${tweet.error || "Unknown error"}` + ); + } + } + process.exit(allTweetsValid ? 0 : 1); + } + const response = await octokit.request( + "POST /repos/:owner/:repo/check-runs", + { + headers: { + accept: "application/vnd.github.antiope-preview+json", + }, + owner: payload.repository.owner.login, + repo: payload.repository.name, + name: "preview", + head_sha: payload.pull_request.head.sha, + started_at: startedAt, + completed_at: new Date().toISOString(), + status: "completed", + conclusion: allTweetsValid ? "success" : "failure", + output: { + title: `${parsedTweets.length} tweet(s)`, + summary: parsedTweets.map(tweetToCheckRunSummary).join("\n\n---\n\n"), + }, + } + ); -// -// Read rules from file. -// -internals.rules = __webpack_require__(983).map(function (rule) { + toolkit.info(`check run created: ${response.data.html_url}`); +} - return { - rule: rule, - suffix: rule.replace(/^(\*\.|\!)/, ''), - punySuffix: -1, - wildcard: rule.charAt(0) === '*', - exception: rule.charAt(0) === '!' - }; -}); +function tweetToCheckRunSummary(tweet) { + let text = autoLink(tweet.text) + .replace(/(^|\n)/g, "$1> ") + .replace(/(^|\n)> (\n|$)/g, "$1>$2"); + if (!tweet.valid) + return `### ❌ Invalid\n\n${text}\n\n${tweet.error || "Unknown error"}`; -// -// Check is given string ends with `suffix`. -// -internals.endsWith = function (str, suffix) { + if (tweet.poll) + text += + "\n\nThe tweet includes a poll:\n\n> 🔘 " + tweet.poll.join("\n> 🔘 "); + return `### ✅ Valid\n\n${text}`; +} - return str.indexOf(suffix, str.length - suffix.length) !== -1; -}; +/***/ }), -// -// Find rule for a given domain. -// -internals.findRule = function (domain) { - - var punyDomain = Punycode.toASCII(domain); - return internals.rules.reduce(function (memo, rule) { - - if (rule.punySuffix === -1){ - rule.punySuffix = Punycode.toASCII(rule.suffix); - } - if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) { - return memo; - } - // This has been commented out as it never seems to run. This is because - // sub tlds always appear after their parents and we never find a shorter - // match. - //if (memo) { - // var memoSuffix = Punycode.toASCII(memo.suffix); - // if (memoSuffix.length >= punySuffix.length) { - // return memo; - // } - //} - return rule; - }, null); -}; +/***/ 701: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = getNewTweets; -// -// Error codes and messages. -// -exports.errorCodes = { - DOMAIN_TOO_SHORT: 'Domain name too short.', - DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', - LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', - LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', - LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', - LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', - LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' -}; +const parseDiff = __nccwpck_require__(4833); +async function getNewTweets({ octokit, toolkit, payload }) { + // Avoid loading huuuge diffs for pull requests that don’t create a new tweet file + const response = await octokit.request( + "GET /repos/:owner/:repo/pulls/:number/files", + { + owner: payload.repository.owner.login, + repo: payload.repository.name, + number: payload.pull_request.number, + } + ); -// -// Validate domain name and throw if not valid. -// -// From wikipedia: -// -// Hostnames are composed of series of labels concatenated with dots, as are all -// domain names. Each label must be between 1 and 63 characters long, and the -// entire hostname (including the delimiting dots) has a maximum of 255 chars. -// -// Allowed chars: -// -// * `a-z` -// * `0-9` -// * `-` but not as a starting or ending character -// * `.` as a separator for the textual portions of a domain name -// -// * http://en.wikipedia.org/wiki/Domain_name -// * http://en.wikipedia.org/wiki/Hostname -// -internals.validate = function (input) { + const { data: files } = response; - // Before we can validate we need to take care of IDNs with unicode chars. - var ascii = Punycode.toASCII(input); + const newTweet = files.find( + (file) => + file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) + ); - if (ascii.length < 1) { - return 'DOMAIN_TOO_SHORT'; - } - if (ascii.length > 255) { - return 'DOMAIN_TOO_LONG'; + if (!newTweet) { + toolkit.info("Pull request does not include new tweets"); + process.exit(0); } - // Check each part's length and allowed chars. - var labels = ascii.split('.'); - var label; + toolkit.info(`${files.length} files changed`); - for (var i = 0; i < labels.length; ++i) { - label = labels[i]; - if (!label.length) { - return 'LABEL_TOO_SHORT'; - } - if (label.length > 63) { - return 'LABEL_TOO_LONG'; - } - if (label.charAt(0) === '-') { - return 'LABEL_STARTS_WITH_DASH'; - } - if (label.charAt(label.length - 1) === '-') { - return 'LABEL_ENDS_WITH_DASH'; - } - if (!/^[a-z0-9\-]+$/.test(label)) { - return 'LABEL_INVALID_CHARS'; + // We load the pull request diff in order to access the contents of the new tweets from + // pull requests coming from forks. The action does not have access to that git tree, + // neither does the action’s token have access to the fork repository + const { data } = await octokit.request( + "GET /repos/:owner/:repo/pulls/:number", + { + headers: { + accept: "application/vnd.github.diff", + }, + owner: payload.repository.owner.login, + repo: payload.repository.name, + number: payload.pull_request.number, } - } -}; + ); + const newTweets = parseDiff(data) + .filter((file) => file.new && /^tweets\/.*\.tweet$/.test(file.to)) + .map((file) => + file.chunks[0].changes.map((line) => line.content.substr(1)).join("\n") + ); -// -// Public API -// + toolkit.info(`New tweets found: ${newTweets.length}`); + return newTweets; +} -// -// Parse domain. -// -exports.parse = function (input) { +/***/ }), - if (typeof input !== 'string') { - throw new TypeError('Domain name must be a string.'); - } +/***/ 1370: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Force domain to lowercase. - var domain = input.slice(0).toLowerCase(); +module.exports = handlePullRequest; - // Handle FQDN. - // TODO: Simply remove trailing dot? - if (domain.charAt(domain.length - 1) === '.') { - domain = domain.slice(0, domain.length - 1); - } +const getNewTweets = __nccwpck_require__(701); +const createCheckRun = __nccwpck_require__(3138); - // Validate and sanitise input. - var error = internals.validate(domain); - if (error) { - return { - input: input, - error: { - message: exports.errorCodes[error], - code: error - } - }; +async function handlePullRequest(state) { + const { octokit, toolkit, payload } = state; + + // ignore builds from branches other than the repository’s defaul branch + const base = payload.pull_request.base.ref; + const defaultBranch = payload.repository.default_branch; + if (defaultBranch !== base) { + return toolkit.info( + `Pull request base "${base}" is not the repository’s default branch` + ); } - var parsed = { - input: input, - tld: null, - sld: null, - domain: null, - subdomain: null, - listed: false - }; + // on request errors, log the requset options and error, then end process + octokit.hook.error("request", (error) => { + toolkit.info(error); + toolkit.setFailed(error.stack); + process.exit(); + }); - var domainParts = domain.split('.'); + const newTweets = await getNewTweets(state); + await createCheckRun(state, newTweets); +} - // Non-Internet TLD - if (domainParts[domainParts.length - 1] === 'local') { - return parsed; - } - var handlePunycode = function () { +/***/ }), - if (!/xn--/.test(domain)) { - return parsed; - } - if (parsed.domain) { - parsed.domain = Punycode.toASCII(parsed.domain); - } - if (parsed.subdomain) { - parsed.subdomain = Punycode.toASCII(parsed.subdomain); - } - return parsed; - }; +/***/ 9054: +/***/ ((module) => { - var rule = internals.findRule(domain); +module.exports = addComment; - // Unlisted tld. - if (!rule) { - if (domainParts.length < 2) { - return parsed; - } - parsed.tld = domainParts.pop(); - parsed.sld = domainParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - if (domainParts.length) { - parsed.subdomain = domainParts.pop(); - } - return handlePunycode(); - } +function addComment({ octokit, payload }, body) { + // add comment with tweet URLs + // https://developer.github.com/v3/repos/comments/#create-a-commit-comment + return octokit.request("POST /repos/:owner/:repo/commits/:sha/comments", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + sha: payload.head_commit.id, + body, + }); +} - // At this point we know the public suffix is listed. - parsed.listed = true; - var tldParts = rule.suffix.split('.'); - var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); +/***/ }), - if (rule.exception) { - privateParts.push(tldParts.shift()); - } +/***/ 4387: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - parsed.tld = tldParts.join('.'); +module.exports = getNewTweets; - if (!privateParts.length) { - return handlePunycode(); - } +const { resolve: resolvePath } = __nccwpck_require__(1017); +const { readFileSync } = __nccwpck_require__(7147); - if (rule.wildcard) { - tldParts.unshift(privateParts.pop()); - parsed.tld = tldParts.join('.'); - } +async function getNewTweets({ payload, octokit }) { + const { + data: { files }, + } = await octokit.request("GET /repos/:owner/:repo/compare/:base...:head", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + base: payload.before, + head: payload.after, + }); - if (!privateParts.length) { - return handlePunycode(); - } + return files + .filter( + (file) => + file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) + ) + .map((file) => { + const text = readFileSync( + resolvePath(process.env.GITHUB_WORKSPACE, file.filename), + "utf8" + ).trim(); + return { + text, + filename: file.filename, + }; + }); +} - parsed.sld = privateParts.pop(); - parsed.domain = [parsed.sld, parsed.tld].join('.'); - if (privateParts.length) { - parsed.subdomain = privateParts.join('.'); - } +/***/ }), - return handlePunycode(); -}; +/***/ 1659: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = handlePush; -// -// Get domain. -// -exports.get = function (domain) { +const { inspect } = __nccwpck_require__(3837); - if (!domain) { - return null; - } - return exports.parse(domain).domain || null; -}; +const addComment = __nccwpck_require__(9054); +const getNewTweets = __nccwpck_require__(4387); +const isSetupDone = __nccwpck_require__(5089); +const setup = __nccwpck_require__(9104); +const tweet = __nccwpck_require__(2179); +const parseTweetFileContent = __nccwpck_require__(5935); -// -// Check whether domain belongs to a known public suffix. -// -exports.isValid = function (domain) { +async function handlePush(state) { + const { toolkit, octokit, payload, ref } = state; - var parsed = exports.parse(domain); - return Boolean(parsed.domain && parsed.listed); -}; + // ignore builds from tags + if (!ref.startsWith("refs/heads/")) { + toolkit.info(`GITHUB_REF is not a branch: ${ref}`); + return; + } + // ignore builds from branches other than the repository’s defaul branch + const defaultBranch = payload.repository.default_branch; + const branch = process.env.GITHUB_REF.substr("refs/heads/".length); + if (branch !== defaultBranch) { + toolkit.info(`"${branch}" is not the default branch`); + return; + } -/***/ }), -/* 11 */ -/***/ (function(module) { + // on request errors, log the requset options and error, then end process + octokit.hook.error("request", (error, options) => { + if (options.request.expectStatus === error.status) { + throw error; + } -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - - return wrapper + toolkit.info(error); + toolkit.setFailed(error.stack); + process.exit(); + }); - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret + // make sure repository is already setup + if (!(await isSetupDone())) { + toolkit.info("tweets/ folder does not yet exist. Starting setup"); + return setup(state); } -} + // find tweets + const newTweets = await getNewTweets(state); + if (newTweets.length === 0) { + toolkit.info("No new tweets"); + return; + } -/***/ }), -/* 12 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + // post all the tweets + const tweetUrls = []; + const tweetErrors = []; + for (let i = 0; i < newTweets.length; i++) { + try { + const parsed = parseTweetFileContent(newTweets[i].text, state.dir); -var aFunction = __webpack_require__(569); -var toObject = __webpack_require__(230); -var IObject = __webpack_require__(420); -var toLength = __webpack_require__(853); + toolkit.info(`Tweeting: ${parsed.text}`); + if (parsed.poll) { + toolkit.info( + `Tweet has poll with ${ + parsed.poll.length + } options: ${parsed.poll.join(", ")}` + ); + } -module.exports = function (that, callbackfn, aLen, memo, isRight) { - aFunction(callbackfn); - var O = toObject(that); - var self = IObject(O); - var length = toLength(O.length); - var index = isRight ? length - 1 : 0; - var i = isRight ? -1 : 1; - if (aLen < 2) for (;;) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - index += i; - if (isRight ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); + let result = await tweet(state, parsed, newTweets[i].filename); + while (result) { + toolkit.info(`tweeted: ${result.url}`); + tweetUrls.push(result.url); + result = result.thread; + } + } catch (error) { + console.log(`error`); + console.log(error[0] || error); + tweetErrors.push(error[0] || error); } } - for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { - memo = callbackfn(memo, self[index], index, O); + + if (tweetUrls.length) { + await addComment(state, "Tweeted:\n\n- " + tweetUrls.join("\n- ")); } - return memo; -}; + + if (tweetErrors.length) { + tweetErrors.forEach((error) => toolkit.error(inspect(error))); + await addComment( + state, + "Errors:\n\n- " + tweetErrors.map((error) => error.message).join("\n- ") + ); + return toolkit.setFailed("Error tweeting"); + } +} /***/ }), -/* 13 */ -/***/ (function(module) { - -"use strict"; +/***/ 5089: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var replace = String.prototype.replace; -var percentTwenties = /%20/g; +module.exports = isSetupDone; -module.exports = { - 'default': 'RFC3986', - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return value; - } - }, - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' -}; +const fs = __nccwpck_require__(7147); +const { resolve: resolvePath } = __nccwpck_require__(1017); +function isSetupDone() { + const tweetsFolderPath = resolvePath(process.env.GITHUB_WORKSPACE, "tweets"); + return new Promise((resolve) => { + fs.stat(tweetsFolderPath, (error, stat) => { + if (error) { + return resolve(false); + } -/***/ }), -/* 14 */, -/* 15 */, -/* 16 */ -/***/ (function(module) { + resolve(stat.isDirectory()); + }); + }); +} -module.exports = require("tls"); /***/ }), -/* 17 */, -/* 18 */ -/***/ (function(module) { -module.exports = eval("require")("encoding"); +/***/ 9104: +/***/ ((module) => { +module.exports = setup; -/***/ }), -/* 19 */, -/* 20 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +async function setup({ toolkit, octokit, payload, sha }) { + toolkit.info('Checking if "twitter-together-setup" branch exists already'); -var dP = __webpack_require__(973); -var anObject = __webpack_require__(990); -var getKeys = __webpack_require__(333); + try { + // Check if "twitter-together-setup" branch exists + // https://developer.github.com/v3/git/refs/#get-a-reference + await octokit.request("HEAD /repos/:owner/:repo/git/refs/:ref", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + ref: "heads/twitter-together-setup", + request: { + expectStatus: 404, + }, + }); -module.exports = __webpack_require__(843) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; + // If it does, the script assumes that the setup pull requset already exists + // and stops here + return toolkit.info('"twitter-together-setup" branch already exists'); + } catch (error) { + toolkit.info('"twitter-together-setup" branch does not yet exist'); + } + // Create the "twitter-together-setup" branch + // https://developer.github.com/v3/git/refs/#create-a-reference + await octokit.request("POST /repos/:owner/:repo/git/refs", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + ref: "refs/heads/twitter-together-setup", + sha, + }); + toolkit.info('"twitter-together-setup" branch created'); -/***/ }), -/* 21 */, -/* 22 */, -/* 23 */, -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { + // Create tweets/README.md from same file in twitter-together/action repo + // https://developer.github.com/v3/repos/contents/#get-contents + const { data: readmeContent } = await octokit.request( + "GET /repos/:owner/:repo/contents/:path", + { + mediaType: { + format: "raw", + }, + owner: "twitter-together", + repo: "action", + path: "tweets/README.md", + } + ); + // https://developer.github.com/v3/repos/contents/#create-or-update-a-file + await octokit.request("PUT /repos/:owner/:repo/contents/:path", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + path: "tweets/README.md", + content: Buffer.from(readmeContent).toString("base64"), + branch: "twitter-together-setup", + message: "twitter-together setup", + }); + toolkit.info('"tweets/README.md" created in "twitter-together-setup" branch'); -"use strict"; + // Create pull request + // https://developer.github.com/v3/pulls/#create-a-pull-request + const { data: pr } = await octokit.request("POST /repos/:owner/:repo/pulls", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + title: "🐦 twitter-together setup", + body: `This pull request creates the \`tweets/\` folder where your \`*.tweet\` files go into. It also creates the \`tweets/README.md\` file with instructions. +Note that if you plan to support tweets with polls, your app has to be approved for Twitter's Ads API. See [the Ads API Application Form](https://github.com/twitter-together/action/blob/main/docs/03-apply-for-access-to-the-twitter-ads-api.md) documentation for more details. -__webpack_require__(493); +Enjoy!`, + head: "twitter-together-setup", + base: payload.repository.default_branch, + }); + toolkit.info(`Setup pull request created: ${pr.html_url}`); +} -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences -var validateUrlUnicodeDomainTld = /(?:(?:[a-z]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; -var _default = validateUrlUnicodeDomainTld; -exports["default"] = _default; -module.exports = exports.default; /***/ }), -/* 25 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { -"use strict"; +/***/ 7351: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +"use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "v1", { - enumerable: true, - get: function () { - return _v.default; - } -}); -Object.defineProperty(exports, "v3", { - enumerable: true, - get: function () { - return _v2.default; - } -}); -Object.defineProperty(exports, "v4", { - enumerable: true, - get: function () { - return _v3.default; - } -}); -Object.defineProperty(exports, "v5", { - enumerable: true, - get: function () { - return _v4.default; - } -}); -Object.defineProperty(exports, "NIL", { - enumerable: true, - get: function () { - return _nil.default; - } -}); -Object.defineProperty(exports, "version", { - enumerable: true, - get: function () { - return _version.default; - } +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); -Object.defineProperty(exports, "validate", { - enumerable: true, - get: function () { - return _validate.default; - } -}); -Object.defineProperty(exports, "stringify", { - enumerable: true, - get: function () { - return _stringify.default; - } -}); -Object.defineProperty(exports, "parse", { - enumerable: true, - get: function () { - return _parse.default; - } -}); - -var _v = _interopRequireDefault(__webpack_require__(810)); - -var _v2 = _interopRequireDefault(__webpack_require__(572)); - -var _v3 = _interopRequireDefault(__webpack_require__(293)); - -var _v4 = _interopRequireDefault(__webpack_require__(804)); - -var _nil = _interopRequireDefault(__webpack_require__(4)); - -var _version = _interopRequireDefault(__webpack_require__(135)); - -var _validate = _interopRequireDefault(__webpack_require__(634)); - -var _stringify = _interopRequireDefault(__webpack_require__(960)); - -var _parse = _interopRequireDefault(__webpack_require__(204)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }), -/* 26 */, -/* 27 */, -/* 28 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_comment(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $comment = it.util.toQuotedString($schema); - if (it.opts.$comment === true) { - out += ' console.log(' + ($comment) + ');'; - } else if (typeof it.opts.$comment == 'function') { - out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; - } - return out; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(2037)); +const utils_1 = __nccwpck_require__(5278); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); } - - -/***/ }), -/* 29 */, -/* 30 */, -/* 31 */, -/* 32 */, -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(277); - -__webpack_require__(549); - -var _validateUrlAuthority = _interopRequireDefault(__webpack_require__(790)); - -var _validateUrlFragment = _interopRequireDefault(__webpack_require__(266)); - -var _validateUrlPath = _interopRequireDefault(__webpack_require__(399)); - -var _validateUrlQuery = _interopRequireDefault(__webpack_require__(180)); - -var _validateUrlScheme = _interopRequireDefault(__webpack_require__(861)); - -var _validateUrlUnencoded = _interopRequireDefault(__webpack_require__(753)); - -var _validateUrlUnicodeAuthority = _interopRequireDefault(__webpack_require__(44)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function isValidMatch(string, regex, optional) { - if (!optional) { - // RegExp["$&"] is the text of the last match - // blank strings are ok, but are falsy, so we check stringiness instead of truthiness - return typeof string === 'string' && string.match(regex) && RegExp['$&'] === string; - } // RegExp["$&"] is the text of the last match - - - return !string || string.match(regex) && RegExp['$&'] === string; +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); } - -function _default(url, unicodeDomains, requireProtocol) { - if (unicodeDomains == null) { - unicodeDomains = true; - } - - if (requireProtocol == null) { - requireProtocol = true; - } - - if (!url) { - return false; - } - - var urlParts = url.match(_validateUrlUnencoded["default"]); - - if (!urlParts || urlParts[0] !== url) { - return false; - } - - var scheme = urlParts[1], - authority = urlParts[2], - path = urlParts[3], - query = urlParts[4], - fragment = urlParts[5]; - - if (!((!requireProtocol || isValidMatch(scheme, _validateUrlScheme["default"]) && scheme.match(/^https?$/i)) && isValidMatch(path, _validateUrlPath["default"]) && isValidMatch(query, _validateUrlQuery["default"], true) && isValidMatch(fragment, _validateUrlFragment["default"], true))) { - return false; - } - - return unicodeDomains && isValidMatch(authority, _validateUrlUnicodeAuthority["default"]) || !unicodeDomains && isValidMatch(authority, _validateUrlAuthority["default"]); +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } } - -module.exports = exports.default; +function escapeData(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map /***/ }), -/* 34 */, -/* 35 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -"use strict"; - -__webpack_require__(223); -var redefine = __webpack_require__(976); -var hide = __webpack_require__(609); -var fails = __webpack_require__(971); -var defined = __webpack_require__(805); -var wks = __webpack_require__(621); -var regexpExec = __webpack_require__(663); +/***/ 2186: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -var SPECIES = wks('species'); +"use strict"; -var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - return ''.replace(re, '$') !== '7'; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); - -var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { - // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - var re = /(?:)/; - var originalExec = re.exec; - re.exec = function () { return originalExec.apply(this, arguments); }; - var result = 'ab'.split(re); - return result.length === 2 && result[0] === 'a' && result[1] === 'b'; -})(); - -module.exports = function (KEY, length, exec) { - var SYMBOL = wks(KEY); - - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) != 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - re.exec = function () { execCalled = true; return null; }; - if (KEY === 'split') { - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - } - re[SYMBOL](''); - return !execCalled; - }) : undefined; - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || - (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var fns = exec( - defined, - SYMBOL, - ''[KEY], - function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; - } - return { done: true, value: nativeMethod.call(str, regexp, arg2) }; - } - return { done: false }; - } - ); - var strfn = fns[0]; - var rxfn = fns[1]; - - redefine(String.prototype, KEY, strfn); - hide(RegExp.prototype, SYMBOL, length == 2 - // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { return rxfn.call(string, this, arg); } - // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { return rxfn.call(string, this); } - ); - } +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; }; - - -/***/ }), -/* 36 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -function resolveYamlMerge(data) { - return data === '<<' || data === null; -} - -module.exports = new Type('tag:yaml.org,2002:merge', { - kind: 'scalar', - resolve: resolveYamlMerge -}); - - -/***/ }), -/* 37 */, -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _codePoint = _interopRequireDefault(__webpack_require__(763)); - -var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashtagBoundary = (0, _regexSupplant["default"])(/(?:^|\uFE0E|\uFE0F|$|(?!#{hashtagAlphaNumeric}|&)#{codePoint})/, { - codePoint: _codePoint["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"] -}); -var _default = hashtagBoundary; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 39 */, -/* 40 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -1114,2483 +870,1592 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const net_1 = __importDefault(__webpack_require__(631)); -const tls_1 = __importDefault(__webpack_require__(16)); -const url_1 = __importDefault(__webpack_require__(835)); -const assert_1 = __importDefault(__webpack_require__(357)); -const debug_1 = __importDefault(__webpack_require__(784)); -const agent_base_1 = __webpack_require__(443); -const parse_proxy_response_1 = __importDefault(__webpack_require__(428)); -const debug = debug_1.default('https-proxy-agent:agent'); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(7351); +const file_command_1 = __nccwpck_require__(717); +const utils_1 = __nccwpck_require__(5278); +const os = __importStar(__nccwpck_require__(2037)); +const path = __importStar(__nccwpck_require__(1017)); +const uuid_1 = __nccwpck_require__(8974); +const oidc_utils_1 = __nccwpck_require__(8041); /** - * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to - * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests. - * - * Outgoing HTTP requests are first tunneled through the proxy server using the - * `CONNECT` HTTP request method to establish a connection to the proxy server, - * and then the proxy server connects to the destination target and issues the - * HTTP request from the proxy server. - * - * `https:` requests have their socket connection upgraded to TLS once - * the connection to the proxy server has been established. - * - * @api public + * The code to exit an action */ -class HttpsProxyAgent extends agent_base_1.Agent { - constructor(_opts) { - let opts; - if (typeof _opts === 'string') { - opts = url_1.default.parse(_opts); - } - else { - opts = _opts; - } - if (!opts) { - throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!'); - } - debug('creating new HttpsProxyAgent instance: %o', opts); - super(opts); - const proxy = Object.assign({}, opts); - // If `true`, then connect to the proxy server over TLS. - // Defaults to `false`. - this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol); - // Prefer `hostname` over `host`, and set the `port` if needed. - proxy.host = proxy.hostname || proxy.host; - if (typeof proxy.port === 'string') { - proxy.port = parseInt(proxy.port, 10); - } - if (!proxy.port && proxy.host) { - proxy.port = this.secureProxy ? 443 : 80; - } - // ALPN is supported by Node.js >= v5. - // attempt to negotiate http/1.1 for proxy servers that support http/2 - if (this.secureProxy && !('ALPNProtocols' in proxy)) { - proxy.ALPNProtocols = ['http 1.1']; +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter. + if (name.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); } - if (proxy.host && proxy.path) { - // If both a `host` and `path` are specified then it's most likely - // the result of a `url.parse()` call... we need to remove the - // `path` portion so that `net.connect()` doesn't attempt to open - // that as a Unix socket file. - delete proxy.path; - delete proxy.pathname; + if (convertedVal.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); } - this.proxy = proxy; + const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; + file_command_1.issueCommand('ENV', commandValue); } - /** - * Called when the node-core HTTP client library is creating a - * new HTTP request. - * - * @api protected - */ - callback(req, opts) { - return __awaiter(this, void 0, void 0, function* () { - const { proxy, secureProxy } = this; - // Create a socket connection to the proxy server. - let socket; - if (secureProxy) { - debug('Creating `tls.Socket`: %o', proxy); - socket = tls_1.default.connect(proxy); - } - else { - debug('Creating `net.Socket`: %o', proxy); - socket = net_1.default.connect(proxy); - } - const headers = Object.assign({}, proxy.headers); - const hostname = `${opts.host}:${opts.port}`; - let payload = `CONNECT ${hostname} HTTP/1.1\r\n`; - // Inject the `Proxy-Authorization` header if necessary. - if (proxy.auth) { - headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`; - } - // The `Host` header should only include the port - // number when it is not the default port. - let { host, port, secureEndpoint } = opts; - if (!isDefaultPort(port, secureEndpoint)) { - host += `:${port}`; - } - headers.Host = host; - headers.Connection = 'close'; - for (const name of Object.keys(headers)) { - payload += `${name}: ${headers[name]}\r\n`; - } - const proxyResponsePromise = parse_proxy_response_1.default(socket); - socket.write(`${payload}\r\n`); - const { statusCode, buffered } = yield proxyResponsePromise; - if (statusCode === 200) { - req.once('socket', resume); - if (opts.secureEndpoint) { - // The proxy is connecting to a TLS server, so upgrade - // this socket connection to a TLS connection. - debug('Upgrading socket connection to TLS'); - const servername = opts.servername || opts.host; - return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket, - servername })); - } - return socket; - } - // Some other status code that's not 200... need to re-play the HTTP - // header "data" events onto the socket once the HTTP machinery is - // attached so that the node core `http` can parse and handle the - // error status code. - // Close the original socket, and a new "fake" socket is returned - // instead, so that the proxy doesn't get the HTTP request - // written to it (which may contain `Authorization` headers or other - // sensitive data). - // - // See: https://hackerone.com/reports/541502 - socket.destroy(); - const fakeSocket = new net_1.default.Socket({ writable: false }); - fakeSocket.readable = true; - // Need to wait for the "socket" event to re-play the "data" events. - req.once('socket', (s) => { - debug('replaying proxy buffer for failed request'); - assert_1.default(s.listenerCount('data') > 0); - // Replay the "buffered" Buffer onto the fake `socket`, since at - // this point the HTTP module machinery has been hooked up for - // the user. - s.push(buffered); - s.push(null); - }); - return fakeSocket; - }); + else { + command_1.issueCommand('set-env', { name }, convertedVal); } } -exports.default = HttpsProxyAgent; -function resume(socket) { - socket.resume(); -} -function isDefaultPort(port, secure) { - return Boolean((!secure && port === 80) || (secure && port === 443)); -} -function isHTTPS(protocol) { - return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false; +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); } -function omit(obj, ...keys) { - const ret = {}; - let key; - for (key in obj) { - if (!keys.includes(key)) { - ret[key] = obj[key]; - } - } - return ret; -} -//# sourceMappingURL=agent.js.map - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -__webpack_require__(765); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var getCharacterWeight = function getCharacterWeight(ch, options) { - var defaultWeight = options.defaultWeight, - ranges = options.ranges; - var weight = defaultWeight; - var chCodePoint = ch.charCodeAt(0); - - if (Array.isArray(ranges)) { - for (var i = 0, length = ranges.length; i < length; i++) { - var currRange = ranges[i]; - - if (chCodePoint >= currRange.start && chCodePoint <= currRange.end) { - weight = currRange.weight; - break; - } - } - } - - return weight; -}; - -var _default = getCharacterWeight; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 42 */, -/* 43 */ -/***/ (function(module) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); - -var _validateUrlUnicodeHost = _interopRequireDefault(__webpack_require__(146)); - -var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeAuthority = (0, _regexSupplant["default"])( // $1 userinfo -'(?:(#{validateUrlUserinfo})@)?' + // $2 host -'(#{validateUrlUnicodeHost})' + // $3 port -'(?::(#{validateUrlPort}))?', { - validateUrlUserinfo: _validateUrlUserinfo["default"], - validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], - validateUrlPort: _validateUrlPort["default"] -}, 'i'); -var _default = validateUrlUnicodeAuthority; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 45 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; -var customRuleCode = __webpack_require__(314); -var definitionSchema = __webpack_require__(952); - -module.exports = { - add: addKeyword, - get: getKeyword, - remove: removeKeyword, - validate: validateKeyword -}; - - +exports.setSecret = setSecret; /** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - * @return {Ajv} this for method chaining + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath */ -function addKeyword(keyword, definition) { - /* jshint validthis: true */ - /* eslint no-shadow: 0 */ - var RULES = this.RULES; - if (RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - this.validateKeyword(definition, true); - - var dataType = definition.type; - if (Array.isArray(dataType)) { - for (var i=0; i x !== ''); + return inputs; } - - +exports.getMultilineInput = getMultilineInput; /** - * Remove keyword - * @this Ajv - * @param {String} keyword pre-defined or custom keyword. - * @return {Ajv} this for method chaining + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean */ -function removeKeyword(keyword) { - /* jshint validthis: true */ - var RULES = this.RULES; - delete RULES.keywords[keyword]; - delete RULES.all[keyword]; - delete RULES.custom[keyword]; - for (var i=0; i { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.result.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); } - } - - return mentions; } - -module.exports = exports.default; +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map /***/ }), -/* 59 */, -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = standardizeIndices; - -__webpack_require__(372); - -__webpack_require__(610); - -var _getUnicodeTextLength = _interopRequireDefault(__webpack_require__(105)); - -function standardizeIndices(text, startIndex, endIndex) { - var totalUnicodeTextLength = (0, _getUnicodeTextLength["default"])(text); - var encodingDiff = text.length - totalUnicodeTextLength; - - if (encodingDiff > 0) { - // split the string into codepoints which will map to the API's indices - var byCodePair = Array.from(text); - var beforeText = startIndex === 0 ? '' : byCodePair.slice(0, startIndex).join(''); - var actualText = byCodePair.slice(startIndex, endIndex).join(''); - return [beforeText.length, beforeText.length + actualText.length]; - } - - return [startIndex, endIndex]; -} - -module.exports = exports.default; -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ 2981: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var _default = (0, _regexSupplant["default"])(/[#{spacesGroup}]/, { - spacesGroup: _spacesGroup["default"] +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); - -exports["default"] = _default; -module.exports = exports.default; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(1017)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map /***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); - -var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); - -var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// A hashtag must contain at least one unicode letter or mark, as well as numbers, underscores, and select special characters. -var hashtagAlpha = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}))/, { - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - astralLetterAndMarks: _astralLetterAndMarks["default"] -}); -var _default = hashtagAlpha; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ 1327: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(809); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var HTML_ENTITIES = { - '&': '&', - '>': '>', - '<': '<', - '"': '"', - "'": ''' -}; - -function _default(text) { - return text && text.replace(/[&"'><]/g, function (character) { - return HTML_ENTITIES[character]; - }); -} - -module.exports = exports.default; - -/***/ }), -/* 64 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(489); -var crypto = __webpack_require__(417); -var http = __webpack_require__(605); -var util = __webpack_require__(669); -var sshpk = __webpack_require__(650); -var jsprim = __webpack_require__(926); -var utils = __webpack_require__(909); - -var sprintf = __webpack_require__(669).format; - -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var HttpSignatureError = utils.HttpSignatureError; -var validateAlgorithm = utils.validateAlgorithm; - -///--- Globals - -var AUTHZ_FMT = - 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; - -///--- Specific Errors - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - -function StrictParsingError(message) { - HttpSignatureError.call(this, message, StrictParsingError); -} -util.inherits(StrictParsingError, HttpSignatureError); - -/* See createSigner() */ -function RequestSigner(options) { - assert.object(options, 'options'); - - var alg = []; - if (options.algorithm !== undefined) { - assert.string(options.algorithm, 'options.algorithm'); - alg = validateAlgorithm(options.algorithm); - } - this.rs_alg = alg; - - /* - * RequestSigners come in two varieties: ones with an rs_signFunc, and ones - * with an rs_signer. - * - * rs_signFunc-based RequestSigners have to build up their entire signing - * string within the rs_lines array and give it to rs_signFunc as a single - * concat'd blob. rs_signer-based RequestSigners can add a line at a time to - * their signing state by using rs_signer.update(), thus only needing to - * buffer the hash function state and one line at a time. - */ - if (options.sign !== undefined) { - assert.func(options.sign, 'options.sign'); - this.rs_signFunc = options.sign; - - } else if (alg[0] === 'hmac' && options.key !== undefined) { - assert.string(options.keyId, 'options.keyId'); - this.rs_keyId = options.keyId; - - if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) - throw (new TypeError('options.key for HMAC must be a string or Buffer')); - - /* - * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their - * data in chunks rather than requiring it all to be given in one go - * at the end, so they are more similar to signers than signFuncs. - */ - this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key); - this.rs_signer.sign = function () { - var digest = this.digest('base64'); - return ({ - hashAlgorithm: alg[1], - toString: function () { return (digest); } - }); - }; - - } else if (options.key !== undefined) { - var key = options.key; - if (typeof (key) === 'string' || Buffer.isBuffer(key)) - key = sshpk.parsePrivateKey(key); - - assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), - 'options.key must be a sshpk.PrivateKey'); - this.rs_key = key; - - assert.string(options.keyId, 'options.keyId'); - this.rs_keyId = options.keyId; - - if (!PK_ALGOS[key.type]) { - throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + - 'keys are not supported')); - } - - if (alg[0] !== undefined && key.type !== alg[0]) { - throw (new InvalidAlgorithmError('options.key must be a ' + - alg[0].toUpperCase() + ' key, was given a ' + - key.type.toUpperCase() + ' key instead')); - } - - this.rs_signer = key.createSign(alg[1]); - - } else { - throw (new TypeError('options.sign (func) or options.key is required')); - } - - this.rs_headers = []; - this.rs_lines = []; -} - -/** - * Adds a header to be signed, with its value, into this signer. - * - * @param {String} header - * @param {String} value - * @return {String} value written - */ -RequestSigner.prototype.writeHeader = function (header, value) { - assert.string(header, 'header'); - header = header.toLowerCase(); - assert.string(value, 'value'); - - this.rs_headers.push(header); - - if (this.rs_signFunc) { - this.rs_lines.push(header + ': ' + value); - - } else { - var line = header + ': ' + value; - if (this.rs_headers.length > 0) - line = '\n' + line; - this.rs_signer.update(line); - } - - return (value); -}; - -/** - * Adds a default Date header, returning its value. - * - * @return {String} - */ -RequestSigner.prototype.writeDateHeader = function () { - return (this.writeHeader('date', jsprim.rfc1123(new Date()))); -}; - -/** - * Adds the request target line to be signed. - * - * @param {String} method, HTTP method (e.g. 'get', 'post', 'put') - * @param {String} path - */ -RequestSigner.prototype.writeTarget = function (method, path) { - assert.string(method, 'method'); - assert.string(path, 'path'); - method = method.toLowerCase(); - this.writeHeader('(request-target)', method + ' ' + path); -}; - -/** - * Calculate the value for the Authorization header on this request - * asynchronously. - * - * @param {Func} callback (err, authz) - */ -RequestSigner.prototype.sign = function (cb) { - assert.func(cb, 'callback'); - - if (this.rs_headers.length < 1) - throw (new Error('At least one header must be signed')); - - var alg, authz; - if (this.rs_signFunc) { - var data = this.rs_lines.join('\n'); - var self = this; - this.rs_signFunc(data, function (err, sig) { - if (err) { - cb(err); - return; - } - try { - assert.object(sig, 'signature'); - assert.string(sig.keyId, 'signature.keyId'); - assert.string(sig.algorithm, 'signature.algorithm'); - assert.string(sig.signature, 'signature.signature'); - alg = validateAlgorithm(sig.algorithm); - - authz = sprintf(AUTHZ_FMT, - sig.keyId, - sig.algorithm, - self.rs_headers.join(' '), - sig.signature); - } catch (e) { - cb(e); - return; - } - cb(null, authz); +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); - - } else { - try { - var sigObj = this.rs_signer.sign(); - } catch (e) { - cb(e); - return; - } - alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm; - var signature = sigObj.toString(); - authz = sprintf(AUTHZ_FMT, - this.rs_keyId, - alg, - this.rs_headers.join(' '), - signature); - cb(null, authz); - } }; - -///--- Exported API - -module.exports = { - /** - * Identifies whether a given object is a request signer or not. - * - * @param {Object} object, the object to identify - * @returns {Boolean} - */ - isSigner: function (obj) { - if (typeof (obj) === 'object' && obj instanceof RequestSigner) - return (true); - return (false); - }, - - /** - * Creates a request signer, used to asynchronously build a signature - * for a request (does not have to be an http.ClientRequest). - * - * @param {Object} options, either: - * - {String} keyId - * - {String|Buffer} key - * - {String} algorithm (optional, required for HMAC) - * or: - * - {Func} sign (data, cb) - * @return {RequestSigner} - */ - createSigner: function createSigner(options) { - return (new RequestSigner(options)); - }, - - /** - * Adds an 'Authorization' header to an http.ClientRequest object. - * - * Note that this API will add a Date header if it's not already set. Any - * other headers in the options.headers array MUST be present, or this - * will throw. - * - * You shouldn't need to check the return type; it's just there if you want - * to be pedantic. - * - * The optional flag indicates whether parsing should use strict enforcement - * of the version draft-cavage-http-signatures-04 of the spec or beyond. - * The default is to be loose and support - * older versions for compatibility. - * - * @param {Object} request an instance of http.ClientRequest. - * @param {Object} options signing parameters object: - * - {String} keyId required. - * - {String} key required (either a PEM or HMAC key). - * - {Array} headers optional; defaults to ['date']. - * - {String} algorithm optional (unless key is HMAC); - * default is the same as the sshpk default - * signing algorithm for the type of key given - * - {String} httpVersion optional; defaults to '1.1'. - * - {Boolean} strict optional; defaults to 'false'. - * @return {Boolean} true if Authorization (and optionally Date) were added. - * @throws {TypeError} on bad parameter types (input). - * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with - * the given key. - * @throws {sshpk.KeyParseError} if key was bad. - * @throws {MissingHeaderError} if a header to be signed was specified but - * was not present. - */ - signRequest: function signRequest(request, options) { - assert.object(request, 'request'); - assert.object(options, 'options'); - assert.optionalString(options.algorithm, 'options.algorithm'); - assert.string(options.keyId, 'options.keyId'); - assert.optionalArrayOfString(options.headers, 'options.headers'); - assert.optionalString(options.httpVersion, 'options.httpVersion'); - - if (!request.getHeader('Date')) - request.setHeader('Date', jsprim.rfc1123(new Date())); - if (!options.headers) - options.headers = ['date']; - if (!options.httpVersion) - options.httpVersion = '1.1'; - - var alg = []; - if (options.algorithm) { - options.algorithm = options.algorithm.toLowerCase(); - alg = validateAlgorithm(options.algorithm); - } - - var i; - var stringToSign = ''; - for (i = 0; i < options.headers.length; i++) { - if (typeof (options.headers[i]) !== 'string') - throw new TypeError('options.headers must be an array of Strings'); - - var h = options.headers[i].toLowerCase(); - - if (h === 'request-line') { - if (!options.strict) { - /** - * We allow headers from the older spec drafts if strict parsing isn't - * specified in options. - */ - stringToSign += - request.method + ' ' + request.path + ' HTTP/' + - options.httpVersion; - } else { - /* Strict parsing doesn't allow older draft headers. */ - throw (new StrictParsingError('request-line is not a valid header ' + - 'with strict parsing enabled.')); - } - } else if (h === '(request-target)') { - stringToSign += - '(request-target): ' + request.method.toLowerCase() + ' ' + - request.path; - } else { - var value = request.getHeader(h); - if (value === undefined || value === '') { - throw new MissingHeaderError(h + ' was not in the request'); - } - stringToSign += h + ': ' + value; - } - - if ((i + 1) < options.headers.length) - stringToSign += '\n'; - } - - /* This is just for unit tests. */ - if (request.hasOwnProperty('_stringToSign')) { - request._stringToSign = stringToSign; - } - - var signature; - if (alg[0] === 'hmac') { - if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) - throw (new TypeError('options.key must be a string or Buffer')); - - var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key); - hmac.update(stringToSign); - signature = hmac.digest('base64'); - - } else { - var key = options.key; - if (typeof (key) === 'string' || Buffer.isBuffer(key)) - key = sshpk.parsePrivateKey(options.key); - - assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), - 'options.key must be a sshpk.PrivateKey'); - - if (!PK_ALGOS[key.type]) { - throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + - 'keys are not supported')); - } - - if (alg[0] !== undefined && key.type !== alg[0]) { - throw (new InvalidAlgorithmError('options.key must be a ' + - alg[0].toUpperCase() + ' key, was given a ' + - key.type.toUpperCase() + ' key instead')); - } - - var signer = key.createSign(alg[1]); - signer.update(stringToSign); - var sigObj = signer.sign(); - if (!HASH_ALGOS[sigObj.hashAlgorithm]) { - throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() + - ' is not a supported hash algorithm')); - } - options.algorithm = key.type + '-' + sigObj.hashAlgorithm; - signature = sigObj.toString(); - assert.notStrictEqual(signature, '', 'empty signature produced'); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(2037); +const fs_1 = __nccwpck_require__(7147); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; } - - var authzHeaderName = options.authorizationHeaderName || 'Authorization'; - - request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT, - options.keyId, - options.algorithm, - options.headers.join(' '), - signature)); - - return true; - } - -}; - - -/***/ }), -/* 65 */, -/* 66 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(581); -var formats = __webpack_require__(13); - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { // eslint-disable-line func-name-matching - return prefix + '[]'; - }, - indices: function indices(prefix, key) { // eslint-disable-line func-name-matching - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { // eslint-disable-line func-name-matching - return prefix; + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); } -}; - -var toISO = Date.prototype.toISOString; - -var defaults = { - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var stringify = function stringify( // eslint-disable-line func-name-matching - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly -) { - var obj = object; - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; } - - obj = ''; + return `<${tag}${htmlAttrs}>${content}`; } - - if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); } - - var values = []; - - if (typeof obj === 'undefined') { - return values; + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); } - - var objKeys; - if (Array.isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - if (Array.isArray(obj)) { - values = values.concat(stringify( - obj[key], - generateArrayPrefix(prefix, key), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } else { - values = values.concat(stringify( - obj[key], - prefix + (allowDots ? '.' + key : '[' + key + ']'), - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); - } - } - - return values; -}; - -module.exports = function (object, opts) { - var obj = object; - var options = opts ? utils.assign({}, opts) : {}; - - if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; } - - var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; - var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; - var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; - var sort = typeof options.sort === 'function' ? options.sort : null; - var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; - var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; - var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; - if (typeof options.format === 'undefined') { - options.format = formats['default']; - } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { - throw new TypeError('Unknown format option provided.'); + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; } - var formatter = formats.formatters[options.format]; - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (Array.isArray(options.filter)) { - filter = options.filter; - objKeys = filter; + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; } - - var arrayFormat; - if (options.arrayFormat in arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); } - - if (sort) { - objKeys.sort(sort); + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (skipNulls && obj[key] === null) { - continue; - } - - keys = keys.concat(stringify( - obj[key], - key, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encode ? encoder : null, - filter, - sort, - allowDots, - serializeDate, - formatter, - encodeValuesOnly - )); + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); } - - var joined = keys.join(delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - return joined.length > 0 ? prefix + joined : ''; -}; - + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map /***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlSubDelims = /[!$&'()*+,;=]/i; -var _default = validateUrlSubDelims; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), -/* 68 */, -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ 5278: +/***/ ((__unused_webpack_module, exports) => { "use strict"; - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _hashSigns = _interopRequireDefault(__webpack_require__(617)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var endHashtagMatch = (0, _regexSupplant["default"])(/^(?:#{hashSigns}|:\/\/)/, { - hashSigns: _hashSigns["default"] -}); -var _default = endHashtagMatch; -exports["default"] = _default; -module.exports = exports.default; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map /***/ }), -/* 70 */, -/* 71 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -// glorious streaming json parser, built specifically for the twitter streaming api -// assumptions: -// 1) ninjas are mammals -// 2) tweets come in chunks of text, surrounded by {}'s, separated by line breaks -// 3) only one tweet per chunk -// -// p = new parser.instance() -// p.addListener('object', function...) -// p.receive(data) -// p.receive(data) -// ... - -var EventEmitter = __webpack_require__(614).EventEmitter; - -var Parser = module.exports = function Parser() { - // Make sure we call our parents constructor - EventEmitter.call(this); - this.buffer = ''; - return this; -}; +/***/ 8974: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// The parser emits events! -Parser.prototype = Object.create(EventEmitter.prototype); - -Parser.END = '\r\n'; -Parser.END_LENGTH = 2; +"use strict"; -Parser.prototype.receive = function receive(buffer) { - this.buffer += buffer.toString('utf8'); - var index, json; - // We have END? - while ((index = this.buffer.indexOf(Parser.END)) > -1) { - json = this.buffer.slice(0, index); - this.buffer = this.buffer.slice(index + Parser.END_LENGTH); - if (json.length > 0) { - try { - json = JSON.parse(json); - // Event message - if (json.event !== undefined) { - // First emit specific event - this.emit(json.event, json); - // Now emit catch-all event - this.emit('event', json); - } - // Delete message - else if (json.delete !== undefined) { - this.emit('delete', json); - } - // Friends message (beginning of stream) - else if (json.friends !== undefined || json.friends_str !== undefined) { - this.emit('friends', json); - } - // Any other message - else { - this.emit('data', json); - } - } - catch (error) { - error.source = json; - this.emit('error', error); - } - } - else { - // Keep Alive - this.emit('ping'); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "v1", ({ + enumerable: true, + get: function () { + return _v.default; } -}; +})); +Object.defineProperty(exports, "v3", ({ + enumerable: true, + get: function () { + return _v2.default; + } +})); +Object.defineProperty(exports, "v4", ({ + enumerable: true, + get: function () { + return _v3.default; + } +})); +Object.defineProperty(exports, "v5", ({ + enumerable: true, + get: function () { + return _v4.default; + } +})); +Object.defineProperty(exports, "NIL", ({ + enumerable: true, + get: function () { + return _nil.default; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _version.default; + } +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; + } +})); +Object.defineProperty(exports, "stringify", ({ + enumerable: true, + get: function () { + return _stringify.default; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.default; + } +})); + +var _v = _interopRequireDefault(__nccwpck_require__(1595)); + +var _v2 = _interopRequireDefault(__nccwpck_require__(6993)); + +var _v3 = _interopRequireDefault(__nccwpck_require__(1472)); + +var _v4 = _interopRequireDefault(__nccwpck_require__(6217)); + +var _nil = _interopRequireDefault(__nccwpck_require__(2381)); + +var _version = _interopRequireDefault(__nccwpck_require__(427)); + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), -/* 72 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + +/***/ 5842: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var Type = __webpack_require__(755); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -function resolveYamlNull(data) { - if (data === null) return true; +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - var max = data.length; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -function constructYamlNull() { - return null; + return _crypto.default.createHash('md5').update(bytes).digest(); } -function isNull(object) { - return object === null; -} +var _default = md5; +exports["default"] = _default; -module.exports = new Type('tag:yaml.org,2002:null', { - kind: 'scalar', - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; }, - empty: function () { return ''; } - }, - defaultStyle: 'lowercase' -}); +/***/ }), + +/***/ 2381: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports["default"] = _default; + /***/ }), -/* 73 */, -/* 74 */, -/* 75 */, -/* 76 */, -/* 77 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + +/***/ 6385: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -// Standard YAML's Core schema. -// http://www.yaml.org/spec/1.2/spec.html#id2804923 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, Core schema has no distinctions from JSON schema is JS-YAML. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) -module.exports = __webpack_require__(407); + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} +var _default = parse; +exports["default"] = _default; /***/ }), -/* 78 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(420); -var defined = __webpack_require__(805); -module.exports = function (it) { - return IObject(defined(it)); -}; +/***/ 6230: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +exports["default"] = _default; /***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 9784: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rng; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} + +/***/ }), + +/***/ 8844: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; -__webpack_require__(493); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; -__webpack_require__(277); +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validGTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|' + '政府|政务|招聘|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|' + '中文网|中信|世界|ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|' + 'كاثوليك|عرب|شبكة|بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|' + 'католик|дети|zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|' + 'yandex|yamaxun|yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|' + 'works|work|woodside|wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|' + 'weir|weibo|wedding|wed|website|weber|webcam|weatherchannel|weather|watches|watch|warman|' + 'wanggou|wang|walter|walmart|wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|' + 'vlaanderen|vivo|viva|vistaprint|vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|' + 'viajes|vet|versicherung|vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|' + 'vana|vacations|ups|uol|uno|university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|' + 'trust|travelersinsurance|travelers|travelchannel|travel|training|trading|trade|toys|toyota|' + 'town|tours|total|toshiba|toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|' + 'tiffany|tienda|tickets|tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|' + 'technology|tech|team|tdk|tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|' + 'systems|symantec|sydney|swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|' + 'sucks|style|study|studio|stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|' + 'statebank|starhub|star|staples|stada|srt|srl|spreadbetting|spot|sport|spiegel|space|soy|sony|' + 'song|solutions|solar|sohu|software|softbank|social|soccer|sncf|smile|smart|sling|skype|sky|' + 'skin|ski|site|singles|sina|silk|shriram|showtime|show|shouji|shopping|shop|shoes|shiksha|shia|' + 'shell|shaw|sharp|shangrila|sfr|sexy|sex|sew|seven|ses|services|sener|select|seek|security|' + 'secure|seat|search|scot|scor|scjohnson|science|schwarz|schule|school|scholarships|schmidt|' + 'schaeffler|scb|sca|sbs|sbi|saxo|save|sas|sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|' + 'samsclub|salon|sale|sakura|safety|safe|saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|' + 'rodeo|rocks|rocher|rmit|rip|rio|ril|rightathome|ricoh|richardli|rich|rexroth|reviews|review|' + 'restaurant|rest|republican|report|repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|' + 'redumbrella|redstone|red|recipes|realty|realtor|realestate|read|raid|radio|racing|qvc|quest|' + 'quebec|qpon|pwc|pub|prudential|pru|protection|property|properties|promo|progressive|prof|' + 'productions|prod|pro|prime|press|praxi|pramerica|post|porn|politie|poker|pohl|pnc|plus|' + 'plumbing|playstation|play|place|pizza|pioneer|pink|ping|pin|pid|pictures|pictet|pics|piaget|' + 'physio|photos|photography|photo|phone|philips|phd|pharmacy|pfizer|pet|pccw|pay|passagens|' + 'party|parts|partners|pars|paris|panerai|panasonic|pamperedchef|page|ovh|ott|otsuka|osaka|' + 'origins|orientexpress|organic|org|orange|oracle|open|ooo|onyourside|online|onl|ong|one|omega|' + 'ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|obi|nyc|ntt|nrw|nra|nowtv|nowruz|' + 'now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|nike|nico|nhk|ngo|nfl|nexus|' + 'nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|net|nec|nba|navy|natura|' + 'nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|msd|movistar|movie|mov|' + 'motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|monash|mom|moi|moe|moda|' + 'mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|miami|metlife|merckmsd|' + 'meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|mcd|mba|mattel|' + 'maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|makeup|maison|' + 'maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|lotte|' + 'london|lol|loft|locus|locker|loans|loan|llp|llc|lixil|living|live|lipsy|link|linde|lincoln|' + 'limo|limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|' + 'legal|lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|' + 'lancome|lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|' + 'kpmg|kosher|komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|' + 'kerrylogistics|kerryhotels|kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|' + 'jmp|jll|jlc|jio|jewelry|jetzt|jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|' + 'ismaili|iselect|irish|ipiranga|investments|intuit|international|intel|int|insure|insurance|' + 'institute|ink|ing|info|infiniti|industries|inc|immobilien|immo|imdb|imamat|ikano|iinet|ifm|' + 'ieee|icu|ice|icbc|ibm|hyundai|hyatt|hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|' + 'hosting|host|hospital|horse|honeywell|honda|homesense|homes|homegoods|homedepot|holiday|' + 'holdings|hockey|hkt|hiv|hitachi|hisamitsu|hiphop|hgtv|hermes|here|helsinki|help|healthcare|' + 'health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|hair|guru|guitars|guide|guge|gucci|guardian|' + 'group|grocery|gripe|green|gratis|graphics|grainger|gov|got|gop|google|goog|goodyear|goodhands|' + 'goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|globo|global|gle|glass|glade|giving|gives|' + 'gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|gay|garden|gap|games|game|gallup|gallo|' + 'gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|ftr|frontier|frontdoor|frogans|' + 'frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|football|foodnetwork|food|foo|fly|' + 'flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|fishing|fish|firmdale|firestone|fire|' + 'financial|finance|final|film|fido|fidelity|fiat|ferrero|ferrari|feedback|fedex|fast|fashion|' + 'farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|extraspace|express|exposed|expert|' + 'exchange|everbank|events|eus|eurovision|etisalat|esurance|estate|esq|erni|ericsson|equipment|' + 'epson|epost|enterprises|engineering|engineer|energy|emerck|email|education|edu|edeka|eco|eat|' + 'earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|download|dot|doosan|domains|' + 'doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|direct|digital|diet|' + 'diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|delivery|degree|' + 'deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|cymru|cuisinella|' + 'csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|cpa|courses|coupons|coupon|' + 'country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|construction|' + 'condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|college|coffee|' + 'codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|cityeats|city|' + 'citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|chintai|cheap|' + 'chat|chase|charity|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' + 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' + 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|' + 'cab|bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' + 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|' + 'bofa|boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|' + 'blackfriday|black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|' + 'beer|beauty|beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|' + 'barclays|barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|' + 'avianca|autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|' + 'asda|arte|art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|' + 'android|analytics|amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|' + 'ally|allstate|allfinanz|alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|' + 'agakhan|africa|afl|afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|' + 'accountant|accenture|academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|' + 'onion' + ')(?=[^0-9a-zA-Z@+-]|$))')); -var _default = validGTLD; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('sha1').update(bytes).digest(); +} + +var _default = sha1; exports["default"] = _default; -module.exports = exports.default; /***/ }), -/* 80 */, -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { -/** - * Module dependencies. - */ +/***/ 1458: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -const tty = __webpack_require__(867); -const util = __webpack_require__(669); +"use strict"; -/** - * This is the Node.js implementation of `debug()`. - */ -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** - * Colors. + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX */ +const byteToHex = []; -exports.colors = [6, 2, 3, 4, 5, 1]; +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = __webpack_require__(247); +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ + return uuid; +} -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); +var _default = stringify; +exports["default"] = _default; - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } +/***/ }), - obj[prop] = val; - return obj; -}, {}); +/***/ 1595: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ +"use strict"; -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -function formatArgs(args) { - const {namespace: name, useColors} = this; +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; -/** - * Invokes `util.format()` with the specified arguments and writes to stderr. - */ +let _clockseq; // Previous uuid creation time -function log(...args) { - return process.stderr.write(util.format(...args) + '\n'); -} -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 -function load() { - return process.env.DEBUG; -} + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } -function init(debug) { - debug.inspectOpts = {}; + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} -module.exports = __webpack_require__(486)(exports); + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock -const {formatters} = module.exports; + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) -/** - * Map %o to `util.inspect()`, all on a single line. - */ + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .replace(/\s*\n\s*/g, ' '); -}; + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested -/***/ }), -/* 82 */ -/***/ (function(__unusedmodule, exports) { + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } -"use strict"; + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.toCommandProperties = exports.toCommandValue = void 0; -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; - } - else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -/** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ -function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; - } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn - }; -} -exports.toCommandProperties = toCommandProperties; -//# sourceMappingURL=utils.js.map + msecs += 12219292800000; // `time_low` -/***/ }), -/* 83 */, -/* 84 */, -/* 85 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` -var toInteger = __webpack_require__(43); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version -/***/ }), -/* 86 */, -/* 87 */ -/***/ (function(module) { + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) -module.exports = require("os"); + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || (0, _stringify.default)(b); +} + +var _default = v1; +exports["default"] = _default; /***/ }), -/* 88 */, -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 6993: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -__webpack_require__(493); +var _v = _interopRequireDefault(__nccwpck_require__(5920)); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; +var _md = _interopRequireDefault(__nccwpck_require__(5842)); -__webpack_require__(549); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _clone = _interopRequireDefault(__webpack_require__(582)); +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports["default"] = _default; -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); +/***/ }), -var _rtlChars = _interopRequireDefault(__webpack_require__(986)); +/***/ 5920: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); +"use strict"; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var hash = text.substring(entity.indices[0], entity.indices[0] + 1); - var hashtag = (0, _htmlEscape["default"])(entity.hashtag); - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs.href = options.hashtagUrlBase + hashtag; - attrs.title = "#".concat(hashtag); - attrs['class'] = options.hashtagClass; - if (hashtag.charAt(0).match(_rtlChars["default"])) { - attrs['class'] += ' rtl'; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +exports.URL = exports.DNS = void 0; - if (options.targetBlank) { - attrs.target = '_blank'; - } +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - return (0, _linkToTextWithSymbol["default"])(entity, hash, hashtag, attrs, options); -} +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); -module.exports = exports.default; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/***/ }), -/* 90 */, -/* 91 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape -var serialOrdered = __webpack_require__(192); + const bytes = []; -// Public API -module.exports = serial; + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); + return bytes; } +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; -/***/ }), -/* 92 */, -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { +function _default(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } -"use strict"; + if (typeof namespace === 'string') { + namespace = (0, _parse.default)(namespace); + } + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` -var _interopRequireDefault = __webpack_require__(764); -__webpack_require__(493); + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; + if (buf) { + offset = offset || 0; -__webpack_require__(210); + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } -var _clone = _interopRequireDefault(__webpack_require__(582)); + return buf; + } -var _extractHtmlAttrsFromOptions = _interopRequireDefault(__webpack_require__(418)); + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); -var _linkToCashtag = _interopRequireDefault(__webpack_require__(833)); + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support -var _linkToHashtag = _interopRequireDefault(__webpack_require__(89)); -var _linkToUrl = _interopRequireDefault(__webpack_require__(893)); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} -var _linkToMentionAndList = _interopRequireDefault(__webpack_require__(660)); +/***/ }), -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Default CSS class for auto-linked lists (along with the url class) -var DEFAULT_LIST_CLASS = 'tweet-url list-slug'; // Default CSS class for auto-linked usernames (along with the url class) +/***/ 1472: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var DEFAULT_USERNAME_CLASS = 'tweet-url username'; // Default CSS class for auto-linked hashtags (along with the url class) +"use strict"; -var DEFAULT_HASHTAG_CLASS = 'tweet-url hashtag'; // Default CSS class for auto-linked cashtags (along with the url class) -var DEFAULT_CASHTAG_CLASS = 'tweet-url cashtag'; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -function _default(text, entities, options) { - var options = (0, _clone["default"])(options || {}); - options.hashtagClass = options.hashtagClass || DEFAULT_HASHTAG_CLASS; - options.hashtagUrlBase = options.hashtagUrlBase || 'https://twitter.com/search?q=%23'; - options.cashtagClass = options.cashtagClass || DEFAULT_CASHTAG_CLASS; - options.cashtagUrlBase = options.cashtagUrlBase || 'https://twitter.com/search?q=%24'; - options.listClass = options.listClass || DEFAULT_LIST_CLASS; - options.usernameClass = options.usernameClass || DEFAULT_USERNAME_CLASS; - options.usernameUrlBase = options.usernameUrlBase || 'https://twitter.com/'; - options.listUrlBase = options.listUrlBase || 'https://twitter.com/'; - options.htmlAttrs = (0, _extractHtmlAttrsFromOptions["default"])(options); - options.invisibleTagAttrs = options.invisibleTagAttrs || "style='position:absolute;left:-9999px;'"; // remap url entities to hash +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); - var urlEntities, i, len; +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - if (options.urlEntities) { - urlEntities = {}; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - for (i = 0, len = options.urlEntities.length; i < len; i++) { - urlEntities[options.urlEntities[i].url] = options.urlEntities[i]; - } +function v4(options, buf, offset) { + options = options || {}; - options.urlEntities = urlEntities; - } + const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - var result = ''; - var beginIndex = 0; // sort entities by start index - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var nonEntity = options.htmlEscapeNonEntities ? _htmlEscape["default"] : function (text) { - return text; - }; + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - for (var i = 0; i < entities.length; i++) { - var entity = entities[i]; - result += nonEntity(text.substring(beginIndex, entity.indices[0])); + if (buf) { + offset = offset || 0; - if (entity.url) { - result += (0, _linkToUrl["default"])(entity, text, options); - } else if (entity.hashtag) { - result += (0, _linkToHashtag["default"])(entity, text, options); - } else if (entity.screenName) { - result += (0, _linkToMentionAndList["default"])(entity, text, options); - } else if (entity.cashtag) { - result += (0, _linkToCashtag["default"])(entity, text, options); + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } - beginIndex = entity.indices[1]; + return buf; } - result += nonEntity(text.substring(beginIndex, text.length)); - return result; + return (0, _stringify.default)(rnds); } -module.exports = exports.default; +var _default = v4; +exports["default"] = _default; /***/ }), -/* 94 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { -var DateProto = Date.prototype; -var INVALID_DATE = 'Invalid Date'; -var TO_STRING = 'toString'; -var $toString = DateProto[TO_STRING]; -var getTime = DateProto.getTime; -if (new Date(NaN) + '' != INVALID_DATE) { - __webpack_require__(976)(DateProto, TO_STRING, function toString() { - var value = getTime.call(this); - // eslint-disable-next-line no-self-compare - return value === value ? $toString.call(this) : INVALID_DATE; - }); -} +/***/ 6217: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _v = _interopRequireDefault(__nccwpck_require__(5920)); -var _interopRequireDefault = __webpack_require__(764); +var _sha = _interopRequireDefault(__nccwpck_require__(8844)); -__webpack_require__(493); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -Object.defineProperty(exports, "__esModule", { - value: true -}); +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; exports["default"] = _default; -var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); - -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractHashtagsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); -} - -module.exports = exports.default; - /***/ }), -/* 96 */ -/***/ (function(module) { -module.exports = {"$id":"entry.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","time","request","response","cache","timings"],"properties":{"pageref":{"type":"string"},"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"time":{"type":"number","min":0},"request":{"$ref":"request.json#"},"response":{"$ref":"response.json#"},"cache":{"$ref":"cache.json#"},"timings":{"$ref":"timings.json#"},"serverIPAddress":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}]},"connection":{"type":"string"},"comment":{"type":"string"}}}; +/***/ 2609: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/***/ }), -/* 97 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var async = __webpack_require__(693) - , abort = __webpack_require__(250) - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; +"use strict"; - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - // return salvaged results - callback(error, state.results); - }); -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; +var _regex = _interopRequireDefault(__nccwpck_require__(6230)); - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - return aborter; +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); } +var _default = validate; +exports["default"] = _default; /***/ }), -/* 98 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; +/***/ 427: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -var common = __webpack_require__(701); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -// get snippet for a single line, respecting maxLength -function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { - var head = ''; - var tail = ''; - var maxHalfLength = Math.floor(maxLineLength / 2) - 1; +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - if (position - lineStart > maxHalfLength) { - head = ' ... '; - lineStart = position - maxHalfLength + head.length; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (lineEnd - position > maxHalfLength) { - tail = ' ...'; - lineEnd = position + maxHalfLength - tail.length; +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); } - return { - str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, - pos: position - lineStart + head.length // relative position - }; -} - - -function padStart(string, max) { - return common.repeat(' ', max - string.length) + string; + return parseInt(uuid.substr(14, 1), 16); } +var _default = version; +exports["default"] = _default; -function makeSnippet(mark, options) { - options = Object.create(options || null); - - if (!mark.buffer) return null; - - if (!options.maxLength) options.maxLength = 79; - if (typeof options.indent !== 'number') options.indent = 1; - if (typeof options.linesBefore !== 'number') options.linesBefore = 3; - if (typeof options.linesAfter !== 'number') options.linesAfter = 2; +/***/ }), - var re = /\r?\n|\r|\0/g; - var lineStarts = [ 0 ]; - var lineEnds = []; - var match; - var foundLineNo = -1; +/***/ 5526: +/***/ (function(__unused_webpack_module, exports) { - while ((match = re.exec(mark.buffer))) { - lineEnds.push(match.index); - lineStarts.push(match.index + match[0].length); +"use strict"; - if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); } - } - - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; - - var result = '', i, line; - var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; - var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); - - for (i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break; - line = getLine( - mark.buffer, - lineStarts[foundLineNo - i], - lineEnds[foundLineNo - i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), - maxLineLength - ); - result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' + result; - } - - line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); - result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; - result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; - - for (i = 1; i <= options.linesAfter; i++) { - if (foundLineNo + i >= lineEnds.length) break; - line = getLine( - mark.buffer, - lineStarts[foundLineNo + i], - lineEnds[foundLineNo + i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), - maxLineLength - ); - result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; - } - - return result.replace(/\n$/, ''); } - - -module.exports = makeSnippet; - +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map /***/ }), -/* 99 */, -/* 100 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(991); -var descriptor = __webpack_require__(690); -var setToStringTag = __webpack_require__(259); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(609)(IteratorPrototype, __webpack_require__(621)('iterator'), function () { return this; }); -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 101 */, -/* 102 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +/***/ 6255: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; -// For internal use, subject to change. +/* eslint-disable @typescript-eslint/no-explicit-any */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); @@ -3610,46304 +2475,23065 @@ var __importStar = (this && this.__importStar) || function (mod) { __setModuleDefault(result, mod); return result; }; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.issueCommand = void 0; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__webpack_require__(747)); -const os = __importStar(__webpack_require__(87)); -const utils_1 = __webpack_require__(82); -function issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueCommand = issueCommand; -//# sourceMappingURL=file-command.js.map - -/***/ }), -/* 103 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(195); -var redefine = __webpack_require__(976); -var hide = __webpack_require__(609); -var Iterators = __webpack_require__(907); -var $iterCreate = __webpack_require__(100); -var setToStringTag = __webpack_require__(259); -var getPrototypeOf = __webpack_require__(111); -var ITERATOR = __webpack_require__(621)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); }; - - -/***/ }), -/* 104 */, -/* 105 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(809); - -var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 - +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(3685)); +const https = __importStar(__nccwpck_require__(5687)); +const pm = __importStar(__nccwpck_require__(9835)); +const tunnel = __importStar(__nccwpck_require__(4294)); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); /** - * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com */ -function _default(text) { - return text.replace(_nonBmpCodePairs["default"], ' ').length; +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; } - -module.exports = exports.default; - -/***/ }), -/* 106 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var abort = __webpack_require__(250) - , async = __webpack_require__(693) - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } } - - -/***/ }), -/* 107 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_allOf(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); } - } - return out; } - - -/***/ }), -/* 108 */, -/* 109 */, -/* 110 */, -/* 111 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(975); -var toObject = __webpack_require__(230); -var IE_PROTO = __webpack_require__(331)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var cashtagsOnly = [], - cashtagsWithIndices = (0, _extractCashtagsWithIndices["default"])(text); - - for (var i = 0; i < cashtagsWithIndices.length; i++) { - cashtagsOnly.push(cashtagsWithIndices[i].cashtag); - } - - return cashtagsOnly; +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; } +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 9835: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + return new URL(proxyVar); + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 1231: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var core = __nccwpck_require__(6762); +var authAction = __nccwpck_require__(20); +var pluginPaginateRest = __nccwpck_require__(4193); +var pluginRestEndpointMethods = __nccwpck_require__(3044); + +const VERSION = "4.0.8"; + +const HttpsProxyAgent = __nccwpck_require__(7219); + +const DEFAULTS = { + authStrategy: authAction.createActionAuth, + baseUrl: getApiBaseUrl(), + userAgent: `octokit-action.js/${VERSION}` +}; + +function getProxyAgent() { + const httpProxy = process.env["HTTP_PROXY"] || process.env["http_proxy"]; + + if (httpProxy) { + return new HttpsProxyAgent(httpProxy); + } + + const httpsProxy = process.env["HTTPS_PROXY"] || process.env["https_proxy"]; + + if (httpsProxy) { + return new HttpsProxyAgent(httpsProxy); + } + + return undefined; +} + +const Octokit = core.Octokit.plugin(pluginPaginateRest.paginateRest, pluginRestEndpointMethods.legacyRestEndpointMethods).defaults(function buildDefaults(options) { + return { ...DEFAULTS, + ...options, + request: { + agent: getProxyAgent(), + ...options.request + } + }; +}); + +function getApiBaseUrl() { + /* istanbul ignore next */ + return process.env["GITHUB_API_URL"] || "https://api.github.com"; +} + +exports.Octokit = Octokit; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 20: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var authToken = __nccwpck_require__(334); + +const createActionAuth = function createActionAuth() { + if (!process.env.GITHUB_ACTION) { + throw new Error("[@octokit/auth-action] `GITHUB_ACTION` environment variable is not set. @octokit/auth-action is meant to be used in GitHub Actions only."); + } + + const definitions = [process.env.GITHUB_TOKEN, process.env.INPUT_GITHUB_TOKEN, process.env.INPUT_TOKEN].filter(Boolean); + + if (definitions.length === 0) { + throw new Error("[@octokit/auth-action] `GITHUB_TOKEN` variable is not set. It must be set on either `env:` or `with:`. See https://github.com/octokit/auth-action.js#createactionauth"); + } + + if (definitions.length > 1) { + throw new Error("[@octokit/auth-action] The token variable is specified more than once. Use either `with.token`, `with.GITHUB_TOKEN`, or `env.GITHUB_TOKEN`. See https://github.com/octokit/auth-action.js#createactionauth"); + } + + const token = definitions.pop(); + return authToken.createTokenAuth(token); +}; + +exports.createActionAuth = createActionAuth; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 334: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +const REGEX_IS_INSTALLATION = /^ghs_/; +const REGEX_IS_USER_TO_SERVER = /^ghu_/; +async function auth(token) { + const isApp = token.split(/\./).length === 3; + const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token: token, + tokenType + }; +} + +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + + return `token ${token}`; +} + +async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge(route, parameters); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} + +const createTokenAuth = function createTokenAuth(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + + if (typeof token !== "string") { + throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + } + + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +exports.createTokenAuth = createTokenAuth; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 6762: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var universalUserAgent = __nccwpck_require__(5030); +var beforeAfterHook = __nccwpck_require__(3682); +var request = __nccwpck_require__(6039); +var graphql = __nccwpck_require__(8467); +var authToken = __nccwpck_require__(334); + +const VERSION = "4.0.5"; + +class Octokit { + constructor(options = {}) { + const hook = new beforeAfterHook.Collection(); + const requestDefaults = { + baseUrl: request.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; // prepend default user agent with `options.userAgent` if set + + requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); + + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + + this.request = request.request.defaults(requestDefaults); + this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); + this.log = Object.assign({ + debug: () => {}, + info: () => {}, + warn: console.warn.bind(console), + error: console.error.bind(console) + }, options.log); + this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. + // (2) If only `options.auth` is set, use the default token authentication strategy. + // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. + // TODO: type `options.auth` based on `options.authStrategy`. + + if (!options.authStrategy) { + if (!options.auth) { + // (1) + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + // (2) + const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ + + hook.wrap("request", auth.hook); + this.auth = auth; + } + } else { + const { + authStrategy, + ...otherOptions + } = options; + const auth = authStrategy(Object.assign({ + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ + + hook.wrap("request", auth.hook); + this.auth = auth; + } // apply plugins + // https://stackoverflow.com/a/16345172 + + + const classConstructor = this.constructor; + classConstructor.plugins.forEach(plugin => { + Object.assign(this, plugin(this, options)); + }); + } + + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + + super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null)); + } + + }; + return OctokitWithDefaults; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + + + static plugin(...newPlugins) { + var _a; + + const currentPlugins = this.plugins; + const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); + return NewOctokit; + } + +} +Octokit.VERSION = VERSION; +Octokit.plugins = []; + +exports.Octokit = Octokit; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 2040: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var isPlainObject = __nccwpck_require__(3287); +var universalUserAgent = __nccwpck_require__(5030); + +function lowercaseKeys(object) { + if (!object) { + return {}; + } + + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject.isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { + [key]: options[key] + });else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { + [key]: options[key] + }); + } + }); + return result; +} + +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === undefined) { + delete obj[key]; + } + } + + return obj; +} + +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { + method, + url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } // lowercase header names before merging with defaults to avoid duplicates + + + options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging + + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten + + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } + + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); + return mergedOptions; +} + +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + + if (names.length === 0) { + return url; + } + + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} + +const urlVariableRegex = /\{[^}]+\}/g; + +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} + +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + + if (!matches) { + return []; + } + + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} + +function omit(object, keysToOmit) { + return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} + +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* istanbul ignore file */ +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + + return part; + }).join(""); +} + +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} + +function isDefined(value) { + return value !== undefined && value !== null; +} + +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} + +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + + return result; +} + +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} + +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + + if (operator && operator !== "+") { + var separator = ","; + + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); +} + +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible + + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later + + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + + const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + + if (!isBinaryRequest) { + if (options.mediaType.format) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } + + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + + + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } // default content-type for JSON if body is set + + + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + + + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present + + + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); +} + +const VERSION = "7.0.2"; + +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. + +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; + +const endpoint = withDefaults(null, DEFAULTS); + +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 6039: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var endpoint = __nccwpck_require__(2040); +var universalUserAgent = __nccwpck_require__(5030); +var isPlainObject = __nccwpck_require__(3287); +var nodeFetch = _interopDefault(__nccwpck_require__(467)); +var requestError = __nccwpck_require__(537); + +const VERSION = "6.2.1"; + +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +function fetchWrapper(requestOptions) { + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + + if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + + let headers = {}; + let status; + let url; + const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || + /* istanbul ignore next */ + nodeFetch; + return fetch(requestOptions.url, Object.assign({ + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + redirect: requestOptions.redirect + }, // `requestOptions.request.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + requestOptions.request)).then(async response => { + url = response.url; + status = response.status; + + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + } + + if (status === 204 || status === 205) { + return; + } // GitHub API returns 200 for HEAD requests + + + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + + throw new requestError.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined + }, + request: requestOptions + }); + } + + if (status === 304) { + throw new requestError.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } + + if (status >= 400) { + const data = await getResponseData(response); + const error = new requestError.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } + + return getResponseData(response); + }).then(data => { + return { + status, + url, + headers, + data + }; + }).catch(error => { + if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; + throw new requestError.RequestError(error.message, 500, { + request: requestOptions + }); + }); +} + +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + + if (/application\/json/.test(contentType)) { + return response.json(); + } + + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + + return getBufferResponse(response); +} + +function toErrorMessage(data) { + if (typeof data === "string") return data; // istanbul ignore else - just in case + + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + + return data.message; + } // istanbul ignore next - just in case + + + return `Unknown error: ${JSON.stringify(data)}`; +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); +} + +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } +}); + +exports.request = request; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 8467: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var request = __nccwpck_require__(3758); +var universalUserAgent = __nccwpck_require__(5030); + +const VERSION = "5.0.1"; + +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); +} + +class GraphqlResponseError extends Error { + constructor(request, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. + + this.errors = response.errors; + this.data = response.data; // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + +} + +const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; +const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); + } + + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + + const parsedOptions = typeof query === "string" ? Object.assign({ + query + }, options) : query; + const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + + if (!result.variables) { + result.variables = {}; + } + + result.variables[key] = parsedOptions[key]; + return result; + }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix + // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 + + const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; + + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + + return request(requestOptions).then(response => { + if (response.data.errors) { + const headers = {}; + + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + + throw new GraphqlResponseError(requestOptions, headers, response.data); + } + + return response.data.data; + }); +} + +function withDefaults(request$1, newDefaults) { + const newRequest = request$1.defaults(newDefaults); + + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: request.request.endpoint + }); +} + +const graphql$1 = withDefaults(request.request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +exports.GraphqlResponseError = GraphqlResponseError; +exports.graphql = graphql$1; +exports.withCustomRequest = withCustomRequest; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9723: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var isPlainObject = __nccwpck_require__(3287); +var universalUserAgent = __nccwpck_require__(5030); + +function lowercaseKeys(object) { + if (!object) { + return {}; + } + + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject.isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { + [key]: options[key] + });else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { + [key]: options[key] + }); + } + }); + return result; +} + +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === undefined) { + delete obj[key]; + } + } + + return obj; +} + +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { + method, + url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } // lowercase header names before merging with defaults to avoid duplicates + + + options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging + + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten + + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } + + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); + return mergedOptions; +} + +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + + if (names.length === 0) { + return url; + } + + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} + +const urlVariableRegex = /\{[^}]+\}/g; + +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} + +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + + if (!matches) { + return []; + } + + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} + +function omit(object, keysToOmit) { + return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} + +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* istanbul ignore file */ +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + + return part; + }).join(""); +} + +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} + +function isDefined(value) { + return value !== undefined && value !== null; +} + +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} + +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + + return result; +} + +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} + +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + + if (operator && operator !== "+") { + var separator = ","; + + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); +} + +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible + + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later + + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + + const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + + if (!isBinaryRequest) { + if (options.mediaType.format) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } + + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + + + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } // default content-type for JSON if body is set + + + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + + + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present + + + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); +} + +const VERSION = "7.0.2"; + +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. + +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; + +const endpoint = withDefaults(null, DEFAULTS); + +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 3758: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var endpoint = __nccwpck_require__(9723); +var universalUserAgent = __nccwpck_require__(5030); +var isPlainObject = __nccwpck_require__(3287); +var nodeFetch = _interopDefault(__nccwpck_require__(467)); +var requestError = __nccwpck_require__(537); + +const VERSION = "6.2.1"; + +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +function fetchWrapper(requestOptions) { + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + + if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + + let headers = {}; + let status; + let url; + const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || + /* istanbul ignore next */ + nodeFetch; + return fetch(requestOptions.url, Object.assign({ + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + redirect: requestOptions.redirect + }, // `requestOptions.request.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + requestOptions.request)).then(async response => { + url = response.url; + status = response.status; + + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + } + + if (status === 204 || status === 205) { + return; + } // GitHub API returns 200 for HEAD requests + + + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + + throw new requestError.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined + }, + request: requestOptions + }); + } + + if (status === 304) { + throw new requestError.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } + + if (status >= 400) { + const data = await getResponseData(response); + const error = new requestError.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } + + return getResponseData(response); + }).then(data => { + return { + status, + url, + headers, + data + }; + }).catch(error => { + if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; + throw new requestError.RequestError(error.message, 500, { + request: requestOptions + }); + }); +} + +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + + if (/application\/json/.test(contentType)) { + return response.json(); + } + + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + + return getBufferResponse(response); +} + +function toErrorMessage(data) { + if (typeof data === "string") return data; // istanbul ignore else - just in case + + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + + return data.message; + } // istanbul ignore next - just in case + + + return `Unknown error: ${JSON.stringify(data)}`; +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); +} + +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } +}); + +exports.request = request; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 4193: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +const VERSION = "4.3.1"; + +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +function normalizePaginatedListResponse(response) { + // endpoints can respond with 204 if repository is empty + if (!response.data) { + return { ...response, + data: [] + }; + } + + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + + response.data.total_count = totalCount; + return response; +} + +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) return { + done: true + }; + + try { + const response = await requestMethod({ + method, + url, + headers + }); + const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + + url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; + return { + value: normalizedResponse + }; + } catch (error) { + if (error.status !== 409) throw error; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + + }) + }; +} + +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} + +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then(result => { + if (result.done) { + return results; + } + + let earlyExit = false; + + function done() { + earlyExit = true; + } + + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + + if (earlyExit) { + return results; + } + + return gather(octokit, results, iterator, mapFn); + }); +} + +const composePaginateRest = Object.assign(paginate, { + iterator +}); + +const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; + +function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); + } else { + return false; + } +} + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ + +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; + +exports.composePaginateRest = composePaginateRest; +exports.isPaginatingEndpoint = isPaginatingEndpoint; +exports.paginateRest = paginateRest; +exports.paginatingEndpoints = paginatingEndpoints; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 3044: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +const Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], + addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], + cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], + createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], + createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], + createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], + deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], + deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], + deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], + deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], + disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], + downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], + downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], + downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], + downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], + enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], + getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], + getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], + getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"], + getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], + getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], + getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], + getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { + renamed: ["actions", "getGithubActionsPermissionsRepository"] + }], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], + getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], + getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], + listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], + listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], + listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], + listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], + listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], + listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], + removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], + setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], + setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], + setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"], + setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], + setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], + setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], + setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], + setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], + setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] + }], + addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], + getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], + listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], + removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] + }], + removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], + getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"], + getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], + getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], + getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], + rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], + setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], + getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { + renamedParameters: { + alert_id: "alert_number" + } + }], + getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { + renamed: ["codeScanning", "listAlertInstances"] + }], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], + createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], + createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], + exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], + getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], + listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org}/codespaces", {}, { + renamedParameters: { + org_id: "org" + } + }], + listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], + removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], + setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + dependabot: { + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] + }, + dependencyGraph: { + createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], + diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] + }, + emojis: { + get: ["GET /emojis"] + }, + enterpriseAdmin: { + addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], + enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], + getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], + getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], + getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"], + listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], + removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"], + setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], + setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], + setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] + }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { + renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] + }], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], + removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { + renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] + }], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { + renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] + }] + }, + issues: { + addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], + removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: ["POST /markdown/raw", { + headers: { + "content-type": "text/plain; charset=utf-8" + } + }] + }, + meta: { + get: ["GET /meta"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + cancelImport: ["DELETE /repos/{owner}/{repo}/import"], + deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], + deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], + downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], + getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], + getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], + getImportStatus: ["GET /repos/{owner}/{repo}/import"], + getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { + renamed: ["migrations", "listReposForAuthenticatedUser"] + }], + mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], + setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + startImport: ["PUT /repos/{owner}/{repo}/import"], + unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], + unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], + updateImport: ["PATCH /repos/{owner}/{repo}/import"] + }, + orgs: { + addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], + createCustomRole: ["POST /orgs/{org}/custom_roles"], + createInvitation: ["POST /orgs/{org}/invitations"], + createWebhook: ["POST /orgs/{org}/hooks"], + deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"], + get: ["GET /orgs/{org}"], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], + removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], + removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"], + updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], + deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], + deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], + deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] + }], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] + }], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], + getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], + getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], + getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], + getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + delete: ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], + updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] + }, + rateLimit: { + get: ["GET /rate_limit"] + }, + reactions: { + createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], + createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], + deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], + deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], + deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], + deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], + deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], + deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], + deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], + listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], + listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] + }, + repos: { + acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "acceptInvitationForAuthenticatedUser"] + }], + acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], + addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], + createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "declineInvitationForAuthenticatedUser"] + }], + declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], + deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], + deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], + disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"], + disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], + downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { + renamed: ["repos", "downloadZipballArchive"] + }], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], + enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"], + enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], + generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], + getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], + listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], + removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], + updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], + updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { + renamed: ["repos", "updateStatusCheckProtection"] + }], + updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], + uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { + baseUrl: "https://uploads.github.com" + }] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], + updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] + }, + teams: { + addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], + addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], + removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: ["POST /user/emails", {}, { + renamed: ["users", "addEmailForAuthenticatedUser"] + }], + addEmailForAuthenticatedUser: ["POST /user/emails"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { + renamed: ["users", "createGpgKeyForAuthenticatedUser"] + }], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { + renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] + }], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { + renamed: ["users", "deleteEmailForAuthenticatedUser"] + }], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] + }], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { + renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] + }], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "getGpgKeyForAuthenticatedUser"] + }], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { + renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] + }], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], + list: ["GET /users"], + listBlockedByAuthenticated: ["GET /user/blocks", {}, { + renamed: ["users", "listBlockedByAuthenticatedUser"] + }], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: ["GET /user/emails", {}, { + renamed: ["users", "listEmailsForAuthenticatedUser"] + }], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: ["GET /user/following", {}, { + renamed: ["users", "listFollowedByAuthenticatedUser"] + }], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { + renamed: ["users", "listGpgKeysForAuthenticatedUser"] + }], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { + renamed: ["users", "listPublicEmailsForAuthenticatedUser"] + }], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { + renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] + }], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { + renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] + }], + setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; + +const VERSION = "6.6.2"; + +function endpointsToMethods(octokit, endpointsMap) { + const newMethods = {}; + + for (const [scope, endpoints] of Object.entries(endpointsMap)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign({ + method, + url + }, defaults); + + if (!newMethods[scope]) { + newMethods[scope] = {}; + } + + const scopeMethods = newMethods[scope]; + + if (decorations) { + scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } + + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } + + return newMethods; +} + +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + /* istanbul ignore next */ + + function withDecorations(...args) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` + + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: undefined + }); + return requestWithDefaults(options); + } + + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + + if (decorations.renamedParameters) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + const options = requestWithDefaults.endpoint.merge(...args); + + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + + if (!(alias in options)) { + options[alias] = options[name]; + } + + delete options[name]; + } + } + + return requestWithDefaults(options); + } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + + + return requestWithDefaults(...args); + } + + return Object.assign(withDecorations, requestWithDefaults); +} + +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION; + +exports.legacyRestEndpointMethods = legacyRestEndpointMethods; +exports.restEndpointMethods = restEndpointMethods; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 537: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var deprecation = __nccwpck_require__(8932); +var once = _interopDefault(__nccwpck_require__(1223)); + +const logOnceCode = once(deprecation => console.warn(deprecation)); +const logOnceHeaders = once(deprecation => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ + +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = "HttpError"; + this.status = statusCode; + let headers; + + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; + } + + if ("response" in options) { + this.response = options.response; + headers = options.response.headers; + } // redact request credentials without mutating original request options + + + const requestCopy = Object.assign({}, options.request); + + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); + } + + requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; // deprecations + + Object.defineProperty(this, "code", { + get() { + logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } + + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + return headers || {}; + } + + }); + } + +} + +exports.RequestError = RequestError; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9690: +/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const events_1 = __nccwpck_require__(2361); +const debug_1 = __importDefault(__nccwpck_require__(8237)); +const promisify_1 = __importDefault(__nccwpck_require__(6570)); +const debug = debug_1.default('agent-base'); +function isAgent(v) { + return Boolean(v) && typeof v.addRequest === 'function'; +} +function isSecureEndpoint() { + const { stack } = new Error(); + if (typeof stack !== 'string') + return false; + return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1); +} +function createAgent(callback, opts) { + return new createAgent.Agent(callback, opts); +} +(function (createAgent) { + /** + * Base `http.Agent` implementation. + * No pooling/keep-alive is implemented by default. + * + * @param {Function} callback + * @api public + */ + class Agent extends events_1.EventEmitter { + constructor(callback, _opts) { + super(); + let opts = _opts; + if (typeof callback === 'function') { + this.callback = callback; + } + else if (callback) { + opts = callback; + } + // Timeout for the socket to be returned from the callback + this.timeout = null; + if (opts && typeof opts.timeout === 'number') { + this.timeout = opts.timeout; + } + // These aren't actually used by `agent-base`, but are required + // for the TypeScript definition files in `@types/node` :/ + this.maxFreeSockets = 1; + this.maxSockets = 1; + this.maxTotalSockets = Infinity; + this.sockets = {}; + this.freeSockets = {}; + this.requests = {}; + this.options = {}; + } + get defaultPort() { + if (typeof this.explicitDefaultPort === 'number') { + return this.explicitDefaultPort; + } + return isSecureEndpoint() ? 443 : 80; + } + set defaultPort(v) { + this.explicitDefaultPort = v; + } + get protocol() { + if (typeof this.explicitProtocol === 'string') { + return this.explicitProtocol; + } + return isSecureEndpoint() ? 'https:' : 'http:'; + } + set protocol(v) { + this.explicitProtocol = v; + } + callback(req, opts, fn) { + throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`'); + } + /** + * Called by node-core's "_http_client.js" module when creating + * a new HTTP request with this Agent instance. + * + * @api public + */ + addRequest(req, _opts) { + const opts = Object.assign({}, _opts); + if (typeof opts.secureEndpoint !== 'boolean') { + opts.secureEndpoint = isSecureEndpoint(); + } + if (opts.host == null) { + opts.host = 'localhost'; + } + if (opts.port == null) { + opts.port = opts.secureEndpoint ? 443 : 80; + } + if (opts.protocol == null) { + opts.protocol = opts.secureEndpoint ? 'https:' : 'http:'; + } + if (opts.host && opts.path) { + // If both a `host` and `path` are specified then it's most + // likely the result of a `url.parse()` call... we need to + // remove the `path` portion so that `net.connect()` doesn't + // attempt to open that as a unix socket file. + delete opts.path; + } + delete opts.agent; + delete opts.hostname; + delete opts._defaultAgent; + delete opts.defaultPort; + delete opts.createConnection; + // Hint to use "Connection: close" + // XXX: non-documented `http` module API :( + req._last = true; + req.shouldKeepAlive = false; + let timedOut = false; + let timeoutId = null; + const timeoutMs = opts.timeout || this.timeout; + const onerror = (err) => { + if (req._hadError) + return; + req.emit('error', err); + // For Safety. Some additional errors might fire later on + // and we need to make sure we don't double-fire the error event. + req._hadError = true; + }; + const ontimeout = () => { + timeoutId = null; + timedOut = true; + const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`); + err.code = 'ETIMEOUT'; + onerror(err); + }; + const callbackError = (err) => { + if (timedOut) + return; + if (timeoutId !== null) { + clearTimeout(timeoutId); + timeoutId = null; + } + onerror(err); + }; + const onsocket = (socket) => { + if (timedOut) + return; + if (timeoutId != null) { + clearTimeout(timeoutId); + timeoutId = null; + } + if (isAgent(socket)) { + // `socket` is actually an `http.Agent` instance, so + // relinquish responsibility for this `req` to the Agent + // from here on + debug('Callback returned another Agent instance %o', socket.constructor.name); + socket.addRequest(req, opts); + return; + } + if (socket) { + socket.once('free', () => { + this.freeSocket(socket, opts); + }); + req.onSocket(socket); + return; + } + const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``); + onerror(err); + }; + if (typeof this.callback !== 'function') { + onerror(new Error('`callback` is not defined')); + return; + } + if (!this.promisifiedCallback) { + if (this.callback.length >= 3) { + debug('Converting legacy callback function to promise'); + this.promisifiedCallback = promisify_1.default(this.callback); + } + else { + this.promisifiedCallback = this.callback; + } + } + if (typeof timeoutMs === 'number' && timeoutMs > 0) { + timeoutId = setTimeout(ontimeout, timeoutMs); + } + if ('port' in opts && typeof opts.port !== 'number') { + opts.port = Number(opts.port); + } + try { + debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`); + Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError); + } + catch (err) { + Promise.reject(err).catch(callbackError); + } + } + freeSocket(socket, opts) { + debug('Freeing socket %o %o', socket.constructor.name, opts); + socket.destroy(); + } + destroy() { + debug('Destroying agent %o', this.constructor.name); + } + } + createAgent.Agent = Agent; + // So that `instanceof` works correctly + createAgent.prototype = createAgent.Agent.prototype; +})(createAgent || (createAgent = {})); +module.exports = createAgent; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 6570: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function promisify(fn) { + return function (req, opts) { + return new Promise((resolve, reject) => { + fn.call(this, req, opts, (err, rtn) => { + if (err) { + reject(err); + } + else { + resolve(rtn); + } + }); + }); + }; +} +exports["default"] = promisify; +//# sourceMappingURL=promisify.js.map + +/***/ }), + +/***/ 3682: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var register = __nccwpck_require__(4670) +var addHook = __nccwpck_require__(5549) +var removeHook = __nccwpck_require__(6819) + +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind +var bindable = bind.bind(bind) + +function bindApi (hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) + hook.api = { remove: removeHookRef } + hook.remove = removeHookRef + + ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind] + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) + }) +} + +function HookSingular () { + var singularHookName = 'h' + var singularHookState = { + registry: {} + } + var singularHook = register.bind(null, singularHookState, singularHookName) + bindApi(singularHook, singularHookState, singularHookName) + return singularHook +} + +function HookCollection () { + var state = { + registry: {} + } + + var hook = register.bind(null, state) + bindApi(hook, state) + + return hook +} + +var collectionHookDeprecationMessageDisplayed = false +function Hook () { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') + collectionHookDeprecationMessageDisplayed = true + } + return HookCollection() +} + +Hook.Singular = HookSingular.bind() +Hook.Collection = HookCollection.bind() + +module.exports = Hook +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook +module.exports.Singular = Hook.Singular +module.exports.Collection = Hook.Collection + + +/***/ }), + +/***/ 5549: +/***/ ((module) => { + +module.exports = addHook; + +function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; + } + + if (kind === "before") { + hook = function (method, options) { + return Promise.resolve() + .then(orig.bind(null, options)) + .then(method.bind(null, options)); + }; + } + + if (kind === "after") { + hook = function (method, options) { + var result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_; + return orig(result, options); + }) + .then(function () { + return result; + }); + }; + } + + if (kind === "error") { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; + } + + state.registry[name].push({ + hook: hook, + orig: orig, + }); +} + + +/***/ }), + +/***/ 4670: +/***/ ((module) => { + +module.exports = register; + +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + + if (!options) { + options = {}; + } + + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } + + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); + } + + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} + + +/***/ }), + +/***/ 6819: +/***/ ((module) => { + +module.exports = removeHook; + +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); + + if (index === -1) { + return; + } + + state.registry[name].splice(index, 1); +} + + +/***/ }), + +/***/ 4818: +/***/ ((module) => { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + + +/***/ }), + +/***/ 285: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 22.1.3.31 Array.prototype[@@unscopables] +var UNSCOPABLES = __nccwpck_require__(9370)('unscopables'); +var ArrayProto = Array.prototype; +if (ArrayProto[UNSCOPABLES] == undefined) __nccwpck_require__(3735)(ArrayProto, UNSCOPABLES, {}); +module.exports = function (key) { + ArrayProto[UNSCOPABLES][key] = true; +}; + + +/***/ }), + +/***/ 9780: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var at = __nccwpck_require__(919)(true); + + // `AdvanceStringIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? at(S, index).length : 1); +}; + + +/***/ }), + +/***/ 8846: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(1048); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), + +/***/ 5072: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __nccwpck_require__(637); +var toLength = __nccwpck_require__(3738); +var toAbsoluteIndex = __nccwpck_require__(3578); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), + +/***/ 4740: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = __nccwpck_require__(9197); +var IObject = __nccwpck_require__(2029); +var toObject = __nccwpck_require__(2702); +var toLength = __nccwpck_require__(3738); +var asc = __nccwpck_require__(5101); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + + +/***/ }), + +/***/ 6027: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var aFunction = __nccwpck_require__(4818); +var toObject = __nccwpck_require__(2702); +var IObject = __nccwpck_require__(2029); +var toLength = __nccwpck_require__(3738); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; + + +/***/ }), + +/***/ 9415: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(1048); +var isArray = __nccwpck_require__(4685); +var SPECIES = __nccwpck_require__(9370)('species'); + +module.exports = function (original) { + var C; + if (isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; + + +/***/ }), + +/***/ 5101: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = __nccwpck_require__(9415); + +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; + + +/***/ }), + +/***/ 6794: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __nccwpck_require__(4227); +var TAG = __nccwpck_require__(9370)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + + +/***/ }), + +/***/ 4227: +/***/ ((module) => { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), + +/***/ 7965: +/***/ ((module) => { + +var core = module.exports = { version: '2.6.12' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + + +/***/ }), + +/***/ 755: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $defineProperty = __nccwpck_require__(1278); +var createDesc = __nccwpck_require__(6370); + +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + + +/***/ }), + +/***/ 9197: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// optional / simple context binding +var aFunction = __nccwpck_require__(4818); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ 4596: +/***/ ((module) => { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), + +/***/ 4998: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// Thank's IE8 for his funny defineProperty +module.exports = !__nccwpck_require__(6410)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), + +/***/ 4738: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(1048); +var document = (__nccwpck_require__(9397).document); +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ 1769: +/***/ ((module) => { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + + +/***/ }), + +/***/ 2606: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// all enumerable object keys, includes symbols +var getKeys = __nccwpck_require__(9971); +var gOPS = __nccwpck_require__(1785); +var pIE = __nccwpck_require__(1118); +module.exports = function (it) { + var result = getKeys(it); + var getSymbols = gOPS.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = pIE.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; +}; + + +/***/ }), + +/***/ 3725: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var global = __nccwpck_require__(9397); +var core = __nccwpck_require__(7965); +var hide = __nccwpck_require__(3735); +var redefine = __nccwpck_require__(5881); +var ctx = __nccwpck_require__(9197); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), + +/***/ 6410: +/***/ ((module) => { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), + +/***/ 7464: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +__nccwpck_require__(7917); +var redefine = __nccwpck_require__(5881); +var hide = __nccwpck_require__(3735); +var fails = __nccwpck_require__(6410); +var defined = __nccwpck_require__(4596); +var wks = __nccwpck_require__(9370); +var regexpExec = __nccwpck_require__(6207); + +var SPECIES = wks('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$
') !== '7'; +}); + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; +})(); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + } + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + + +/***/ }), + +/***/ 7497: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +// 21.2.5.3 get RegExp.prototype.flags +var anObject = __nccwpck_require__(8846); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), + +/***/ 1366: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(5131)('native-function-to-string', Function.toString); + + +/***/ }), + +/***/ 9397: +/***/ ((module) => { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + + +/***/ }), + +/***/ 4898: +/***/ ((module) => { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), + +/***/ 3735: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var dP = __nccwpck_require__(1278); +var createDesc = __nccwpck_require__(6370); +module.exports = __nccwpck_require__(4998) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ 8931: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var document = (__nccwpck_require__(9397).document); +module.exports = document && document.documentElement; + + +/***/ }), + +/***/ 9842: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = !__nccwpck_require__(4998) && !__nccwpck_require__(6410)(function () { + return Object.defineProperty(__nccwpck_require__(4738)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), + +/***/ 5116: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(1048); +var setPrototypeOf = (__nccwpck_require__(310).set); +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; +}; + + +/***/ }), + +/***/ 2029: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __nccwpck_require__(4227); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + + +/***/ }), + +/***/ 5519: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// check on default Array iterator +var Iterators = __nccwpck_require__(5424); +var ITERATOR = __nccwpck_require__(9370)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + + +/***/ }), + +/***/ 4685: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.2.2 IsArray(argument) +var cof = __nccwpck_require__(4227); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; + + +/***/ }), + +/***/ 1048: +/***/ ((module) => { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), + +/***/ 302: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.2.8 IsRegExp(argument) +var isObject = __nccwpck_require__(1048); +var cof = __nccwpck_require__(4227); +var MATCH = __nccwpck_require__(9370)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; + + +/***/ }), + +/***/ 6098: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// call something on iterator step with safe closing on error +var anObject = __nccwpck_require__(8846); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + + +/***/ }), + +/***/ 2098: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var create = __nccwpck_require__(2894); +var descriptor = __nccwpck_require__(6370); +var setToStringTag = __nccwpck_require__(9845); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__nccwpck_require__(3735)(IteratorPrototype, __nccwpck_require__(9370)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + + +/***/ }), + +/***/ 1855: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var LIBRARY = __nccwpck_require__(2192); +var $export = __nccwpck_require__(3725); +var redefine = __nccwpck_require__(5881); +var hide = __nccwpck_require__(3735); +var Iterators = __nccwpck_require__(5424); +var $iterCreate = __nccwpck_require__(2098); +var setToStringTag = __nccwpck_require__(9845); +var getPrototypeOf = __nccwpck_require__(827); +var ITERATOR = __nccwpck_require__(9370)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + + +/***/ }), + +/***/ 2992: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var ITERATOR = __nccwpck_require__(9370)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + + +/***/ }), + +/***/ 1387: +/***/ ((module) => { + +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + + +/***/ }), + +/***/ 5424: +/***/ ((module) => { + +module.exports = {}; + + +/***/ }), + +/***/ 2192: +/***/ ((module) => { + +module.exports = false; + + +/***/ }), + +/***/ 4410: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var META = __nccwpck_require__(2959)('meta'); +var isObject = __nccwpck_require__(1048); +var has = __nccwpck_require__(4898); +var setDesc = (__nccwpck_require__(1278).f); +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !__nccwpck_require__(6410)(function () { + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + + +/***/ }), + +/***/ 2894: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __nccwpck_require__(8846); +var dPs = __nccwpck_require__(5534); +var enumBugKeys = __nccwpck_require__(1769); +var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __nccwpck_require__(4738)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + (__nccwpck_require__(8931).appendChild)(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), + +/***/ 1278: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +var anObject = __nccwpck_require__(8846); +var IE8_DOM_DEFINE = __nccwpck_require__(9842); +var toPrimitive = __nccwpck_require__(9075); +var dP = Object.defineProperty; + +exports.f = __nccwpck_require__(4998) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ 5534: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var dP = __nccwpck_require__(1278); +var anObject = __nccwpck_require__(8846); +var getKeys = __nccwpck_require__(9971); + +module.exports = __nccwpck_require__(4998) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + + +/***/ }), + +/***/ 1611: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +var pIE = __nccwpck_require__(1118); +var createDesc = __nccwpck_require__(6370); +var toIObject = __nccwpck_require__(637); +var toPrimitive = __nccwpck_require__(9075); +var has = __nccwpck_require__(4898); +var IE8_DOM_DEFINE = __nccwpck_require__(9842); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = __nccwpck_require__(4998) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + + +/***/ }), + +/***/ 494: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = __nccwpck_require__(637); +var gOPN = (__nccwpck_require__(7779).f); +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + + +/***/ }), + +/***/ 7779: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = __nccwpck_require__(6686); +var hiddenKeys = (__nccwpck_require__(1769).concat)('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ 1785: +/***/ ((__unused_webpack_module, exports) => { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ 827: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __nccwpck_require__(4898); +var toObject = __nccwpck_require__(2702); +var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + + +/***/ }), + +/***/ 6686: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var has = __nccwpck_require__(4898); +var toIObject = __nccwpck_require__(637); +var arrayIndexOf = __nccwpck_require__(5072)(false); +var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), + +/***/ 9971: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __nccwpck_require__(6686); +var enumBugKeys = __nccwpck_require__(1769); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ 1118: +/***/ ((__unused_webpack_module, exports) => { + +exports.f = {}.propertyIsEnumerable; + + +/***/ }), + +/***/ 4654: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// most Object methods by ES6 should accept primitives +var $export = __nccwpck_require__(3725); +var core = __nccwpck_require__(7965); +var fails = __nccwpck_require__(6410); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + + +/***/ }), + +/***/ 524: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// all object keys, includes non-enumerable and symbols +var gOPN = __nccwpck_require__(7779); +var gOPS = __nccwpck_require__(1785); +var anObject = __nccwpck_require__(8846); +var Reflect = (__nccwpck_require__(9397).Reflect); +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + + +/***/ }), + +/***/ 6370: +/***/ ((module) => { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ 5881: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var global = __nccwpck_require__(9397); +var hide = __nccwpck_require__(3735); +var has = __nccwpck_require__(4898); +var SRC = __nccwpck_require__(2959)('src'); +var $toString = __nccwpck_require__(1366); +var TO_STRING = 'toString'; +var TPL = ('' + $toString).split(TO_STRING); + +(__nccwpck_require__(7965).inspectSource) = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + + +/***/ }), + +/***/ 208: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var classof = __nccwpck_require__(6794); +var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); +}; + + +/***/ }), + +/***/ 6207: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var regexpFlags = __nccwpck_require__(7497); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var LAST_INDEX = 'lastIndex'; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; +})(); + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; + + +/***/ }), + +/***/ 310: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = __nccwpck_require__(1048); +var anObject = __nccwpck_require__(8846); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = __nccwpck_require__(9197)(Function.call, (__nccwpck_require__(1611).f)(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + + +/***/ }), + +/***/ 7205: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var global = __nccwpck_require__(9397); +var dP = __nccwpck_require__(1278); +var DESCRIPTORS = __nccwpck_require__(4998); +var SPECIES = __nccwpck_require__(9370)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + + +/***/ }), + +/***/ 9845: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var def = (__nccwpck_require__(1278).f); +var has = __nccwpck_require__(4898); +var TAG = __nccwpck_require__(9370)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + + +/***/ }), + +/***/ 6613: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var shared = __nccwpck_require__(5131)('keys'); +var uid = __nccwpck_require__(2959); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + + +/***/ }), + +/***/ 5131: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var core = __nccwpck_require__(7965); +var global = __nccwpck_require__(9397); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: __nccwpck_require__(2192) ? 'pure' : 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), + +/***/ 1799: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __nccwpck_require__(8846); +var aFunction = __nccwpck_require__(4818); +var SPECIES = __nccwpck_require__(9370)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + + +/***/ }), + +/***/ 3700: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var fails = __nccwpck_require__(6410); + +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; + + +/***/ }), + +/***/ 919: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var toInteger = __nccwpck_require__(8592); +var defined = __nccwpck_require__(4596); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), + +/***/ 3578: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var toInteger = __nccwpck_require__(8592); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), + +/***/ 8592: +/***/ ((module) => { + +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + + +/***/ }), + +/***/ 637: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __nccwpck_require__(2029); +var defined = __nccwpck_require__(4596); +module.exports = function (it) { + return IObject(defined(it)); +}; + + +/***/ }), + +/***/ 3738: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.1.15 ToLength +var toInteger = __nccwpck_require__(8592); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + + +/***/ }), + +/***/ 2702: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.1.13 ToObject(argument) +var defined = __nccwpck_require__(4596); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), + +/***/ 9075: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __nccwpck_require__(1048); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), + +/***/ 2959: +/***/ ((module) => { + +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + + +/***/ }), + +/***/ 3382: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var global = __nccwpck_require__(9397); +var core = __nccwpck_require__(7965); +var LIBRARY = __nccwpck_require__(2192); +var wksExt = __nccwpck_require__(3852); +var defineProperty = (__nccwpck_require__(1278).f); +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + + +/***/ }), + +/***/ 3852: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +exports.f = __nccwpck_require__(9370); + + +/***/ }), + +/***/ 9370: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var store = __nccwpck_require__(5131)('wks'); +var uid = __nccwpck_require__(2959); +var Symbol = (__nccwpck_require__(9397).Symbol); +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + +/***/ }), + +/***/ 1254: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var classof = __nccwpck_require__(6794); +var ITERATOR = __nccwpck_require__(9370)('iterator'); +var Iterators = __nccwpck_require__(5424); +module.exports = (__nccwpck_require__(7965).getIteratorMethod) = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ 4679: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $export = __nccwpck_require__(3725); +var $filter = __nccwpck_require__(4740)(2); + +$export($export.P + $export.F * !__nccwpck_require__(3700)([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), + +/***/ 7461: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $export = __nccwpck_require__(3725); +var $forEach = __nccwpck_require__(4740)(0); +var STRICT = __nccwpck_require__(3700)([].forEach, true); + +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), + +/***/ 9358: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var ctx = __nccwpck_require__(9197); +var $export = __nccwpck_require__(3725); +var toObject = __nccwpck_require__(2702); +var call = __nccwpck_require__(6098); +var isArrayIter = __nccwpck_require__(5519); +var toLength = __nccwpck_require__(3738); +var createProperty = __nccwpck_require__(755); +var getIterFn = __nccwpck_require__(1254); + +$export($export.S + $export.F * !__nccwpck_require__(2992)(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = getIterFn(O); + var length, result, step, iterator; + if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for (result = new C(length); length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + + +/***/ }), + +/***/ 8074: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $export = __nccwpck_require__(3725); +var $indexOf = __nccwpck_require__(5072)(false); +var $native = [].indexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !__nccwpck_require__(3700)($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); + + +/***/ }), + +/***/ 4088: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = __nccwpck_require__(3725); + +$export($export.S, 'Array', { isArray: __nccwpck_require__(4685) }); + + +/***/ }), + +/***/ 3938: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var addToUnscopables = __nccwpck_require__(285); +var step = __nccwpck_require__(1387); +var Iterators = __nccwpck_require__(5424); +var toIObject = __nccwpck_require__(637); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __nccwpck_require__(1855)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), + +/***/ 3771: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $export = __nccwpck_require__(3725); +var $reduce = __nccwpck_require__(6027); + +$export($export.P + $export.F * !__nccwpck_require__(3700)([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } +}); + + +/***/ }), + +/***/ 7920: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $export = __nccwpck_require__(3725); +var aFunction = __nccwpck_require__(4818); +var toObject = __nccwpck_require__(2702); +var fails = __nccwpck_require__(6410); +var $sort = [].sort; +var test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function () { + // IE8- + test.sort(undefined); +}) || !fails(function () { + // V8 bug + test.sort(null); + // Old WebKit +}) || !__nccwpck_require__(3700)($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); + + +/***/ }), + +/***/ 1703: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +var DateProto = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var $toString = DateProto[TO_STRING]; +var getTime = DateProto.getTime; +if (new Date(NaN) + '' != INVALID_DATE) { + __nccwpck_require__(5881)(DateProto, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString.call(this) : INVALID_DATE; + }); +} + + +/***/ }), + +/***/ 5085: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +var $export = __nccwpck_require__(3725); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !__nccwpck_require__(4998), 'Object', { defineProperties: __nccwpck_require__(5534) }); + + +/***/ }), + +/***/ 6880: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +var $export = __nccwpck_require__(3725); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !__nccwpck_require__(4998), 'Object', { defineProperty: (__nccwpck_require__(1278).f) }); + + +/***/ }), + +/***/ 7103: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +// 19.1.2.14 Object.keys(O) +var toObject = __nccwpck_require__(2702); +var $keys = __nccwpck_require__(9971); + +__nccwpck_require__(4654)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + + +/***/ }), + +/***/ 571: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +// 19.1.3.6 Object.prototype.toString() +var classof = __nccwpck_require__(6794); +var test = {}; +test[__nccwpck_require__(9370)('toStringTag')] = 'z'; +if (test + '' != '[object z]') { + __nccwpck_require__(5881)(Object.prototype, 'toString', function toString() { + return '[object ' + classof(this) + ']'; + }, true); +} + + +/***/ }), + +/***/ 7662: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +var global = __nccwpck_require__(9397); +var inheritIfRequired = __nccwpck_require__(5116); +var dP = (__nccwpck_require__(1278).f); +var gOPN = (__nccwpck_require__(7779).f); +var isRegExp = __nccwpck_require__(302); +var $flags = __nccwpck_require__(7497); +var $RegExp = global.RegExp; +var Base = $RegExp; +var proto = $RegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; +// "new" creates a new object, old webkit buggy here +var CORRECT_NEW = new $RegExp(re1) !== re1; + +if (__nccwpck_require__(4998) && (!CORRECT_NEW || __nccwpck_require__(6410)(function () { + re2[__nccwpck_require__(9370)('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))) { + $RegExp = function RegExp(p, f) { + var tiRE = this instanceof $RegExp; + var piRE = isRegExp(p); + var fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function (key) { + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function () { return Base[key]; }, + set: function (it) { Base[key] = it; } + }); + }; + for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + __nccwpck_require__(5881)(global, 'RegExp', $RegExp); +} + +__nccwpck_require__(7205)('RegExp'); + + +/***/ }), + +/***/ 7917: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var regexpExec = __nccwpck_require__(6207); +__nccwpck_require__(3725)({ + target: 'RegExp', + proto: true, + forced: regexpExec !== /./.exec +}, { + exec: regexpExec +}); + + +/***/ }), + +/***/ 6045: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +// 21.2.5.3 get RegExp.prototype.flags() +if (__nccwpck_require__(4998) && /./g.flags != 'g') (__nccwpck_require__(1278).f)(RegExp.prototype, 'flags', { + configurable: true, + get: __nccwpck_require__(7497) +}); + + +/***/ }), + +/***/ 4931: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var anObject = __nccwpck_require__(8846); +var toLength = __nccwpck_require__(3738); +var advanceStringIndex = __nccwpck_require__(9780); +var regExpExec = __nccwpck_require__(208); + +// @@match logic +__nccwpck_require__(7464)('match', 1, function (defined, MATCH, $match, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative($match, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + if (!rx.global) return regExpExec(rx, S); + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + + +/***/ }), + +/***/ 6764: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var anObject = __nccwpck_require__(8846); +var toObject = __nccwpck_require__(2702); +var toLength = __nccwpck_require__(3738); +var toInteger = __nccwpck_require__(8592); +var advanceStringIndex = __nccwpck_require__(9780); +var regExpExec = __nccwpck_require__(208); +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +__nccwpck_require__(7464)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); + + +/***/ }), + +/***/ 1351: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var isRegExp = __nccwpck_require__(302); +var anObject = __nccwpck_require__(8846); +var speciesConstructor = __nccwpck_require__(1799); +var advanceStringIndex = __nccwpck_require__(9780); +var toLength = __nccwpck_require__(3738); +var callRegExpExec = __nccwpck_require__(208); +var regexpExec = __nccwpck_require__(6207); +var fails = __nccwpck_require__(6410); +var $min = Math.min; +var $push = [].push; +var $SPLIT = 'split'; +var LENGTH = 'length'; +var LAST_INDEX = 'lastIndex'; +var MAX_UINT32 = 0xffffffff; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +__nccwpck_require__(7464)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}); + + +/***/ }), + +/***/ 8395: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +__nccwpck_require__(6045); +var anObject = __nccwpck_require__(8846); +var $flags = __nccwpck_require__(7497); +var DESCRIPTORS = __nccwpck_require__(4998); +var TO_STRING = 'toString'; +var $toString = /./[TO_STRING]; + +var define = function (fn) { + __nccwpck_require__(5881)(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if (__nccwpck_require__(6410)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); +} + + +/***/ }), + +/***/ 5696: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var $at = __nccwpck_require__(919)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +__nccwpck_require__(1855)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + + +/***/ }), + +/***/ 3747: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +// ECMAScript 6 symbols shim +var global = __nccwpck_require__(9397); +var has = __nccwpck_require__(4898); +var DESCRIPTORS = __nccwpck_require__(4998); +var $export = __nccwpck_require__(3725); +var redefine = __nccwpck_require__(5881); +var META = (__nccwpck_require__(4410).KEY); +var $fails = __nccwpck_require__(6410); +var shared = __nccwpck_require__(5131); +var setToStringTag = __nccwpck_require__(9845); +var uid = __nccwpck_require__(2959); +var wks = __nccwpck_require__(9370); +var wksExt = __nccwpck_require__(3852); +var wksDefine = __nccwpck_require__(3382); +var enumKeys = __nccwpck_require__(2606); +var isArray = __nccwpck_require__(4685); +var anObject = __nccwpck_require__(8846); +var isObject = __nccwpck_require__(1048); +var toObject = __nccwpck_require__(2702); +var toIObject = __nccwpck_require__(637); +var toPrimitive = __nccwpck_require__(9075); +var createDesc = __nccwpck_require__(6370); +var _create = __nccwpck_require__(2894); +var gOPNExt = __nccwpck_require__(494); +var $GOPD = __nccwpck_require__(1611); +var $GOPS = __nccwpck_require__(1785); +var $DP = __nccwpck_require__(1278); +var $keys = __nccwpck_require__(9971); +var gOPD = $GOPD.f; +var dP = $DP.f; +var gOPN = gOPNExt.f; +var $Symbol = global.Symbol; +var $JSON = global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE = 'prototype'; +var HIDDEN = wks('_hidden'); +var TO_PRIMITIVE = wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = shared('symbol-registry'); +var AllSymbols = shared('symbols'); +var OPSymbols = shared('op-symbols'); +var ObjectProto = Object[PROTOTYPE]; +var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function () { + return _create(dP({}, 'a', { + get: function () { return dP(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (it, key, D) { + var protoDesc = gOPD(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + dP(it, key, D); + if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function (tag) { + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto) $defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if (has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { enumerable: createDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = toPrimitive(key, true)); + if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = toIObject(it); + key = toPrimitive(key, true); + if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; + var D = gOPD(it, key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN(toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto; + var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto) $set.call(OPSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + (__nccwpck_require__(7779).f) = gOPNExt.f = $getOwnPropertyNames; + (__nccwpck_require__(1118).f) = $propertyIsEnumerable; + $GOPS.f = $getOwnPropertySymbols; + + if (DESCRIPTORS && !__nccwpck_require__(2192)) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function (name) { + return wrap(wks(name)); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); + +for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + +for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); + +$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return $GOPS.f(toObject(it)); + } +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || __nccwpck_require__(3735)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); + + +/***/ }), + +/***/ 5188: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = __nccwpck_require__(3725); +var ownKeys = __nccwpck_require__(524); +var toIObject = __nccwpck_require__(637); +var gOPD = __nccwpck_require__(1611); +var createProperty = __nccwpck_require__(755); + +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIObject(object); + var getDesc = gOPD.f; + var keys = ownKeys(O); + var result = {}; + var i = 0; + var key, desc; + while (keys.length > i) { + desc = getDesc(O, key = keys[i++]); + if (desc !== undefined) createProperty(result, key, desc); + } + return result; + } +}); + + +/***/ }), + +/***/ 230: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +var $iterators = __nccwpck_require__(3938); +var getKeys = __nccwpck_require__(9971); +var redefine = __nccwpck_require__(5881); +var global = __nccwpck_require__(9397); +var hide = __nccwpck_require__(3735); +var Iterators = __nccwpck_require__(5424); +var wks = __nccwpck_require__(9370); +var ITERATOR = wks('iterator'); +var TO_STRING_TAG = wks('toStringTag'); +var ArrayValues = Iterators.Array; + +var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false +}; + +for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); + if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); + } +} + + +/***/ }), + +/***/ 8222: +/***/ ((module, exports, __nccwpck_require__) => { + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ +function log(...args) { + // This hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return typeof console === 'object' && + console.log && + console.log(...args); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __nccwpck_require__(6243)(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + +/***/ }), + +/***/ 6243: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __nccwpck_require__(900); + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * Active `debug` instances. + */ + createDebug.instances = []; + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return match; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = createDebug.enabled(namespace); + debug.useColors = createDebug.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + debug.extend = extend; + // Debug.formatArgs = formatArgs; + // debug.rawLog = rawLog; + + // env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + createDebug.instances.push(debug); + + return debug; + } + + function destroy() { + const index = createDebug.instances.indexOf(this); + if (index !== -1) { + createDebug.instances.splice(index, 1); + return true; + } + return false; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + + for (i = 0; i < createDebug.instances.length; i++) { + const instance = createDebug.instances[i]; + instance.enabled = createDebug.enabled(instance.namespace); + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; + + +/***/ }), + +/***/ 8237: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __nccwpck_require__(8222); +} else { + module.exports = __nccwpck_require__(5332); +} + + +/***/ }), + +/***/ 5332: +/***/ ((module, exports, __nccwpck_require__) => { + +/** + * Module dependencies. + */ + +const tty = __nccwpck_require__(6224); +const util = __nccwpck_require__(3837); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = __nccwpck_require__(9318); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = __nccwpck_require__(6243)(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .replace(/\s*\n\s*/g, ' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + + +/***/ }), + +/***/ 8932: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} + +exports.Deprecation = Deprecation; + + +/***/ }), + +/***/ 1621: +/***/ ((module) => { + +"use strict"; + +module.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf('--'); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); +}; + + +/***/ }), + +/***/ 5098: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const net_1 = __importDefault(__nccwpck_require__(1808)); +const tls_1 = __importDefault(__nccwpck_require__(4404)); +const url_1 = __importDefault(__nccwpck_require__(7310)); +const assert_1 = __importDefault(__nccwpck_require__(9491)); +const debug_1 = __importDefault(__nccwpck_require__(8237)); +const agent_base_1 = __nccwpck_require__(9690); +const parse_proxy_response_1 = __importDefault(__nccwpck_require__(595)); +const debug = debug_1.default('https-proxy-agent:agent'); +/** + * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to + * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests. + * + * Outgoing HTTP requests are first tunneled through the proxy server using the + * `CONNECT` HTTP request method to establish a connection to the proxy server, + * and then the proxy server connects to the destination target and issues the + * HTTP request from the proxy server. + * + * `https:` requests have their socket connection upgraded to TLS once + * the connection to the proxy server has been established. + * + * @api public + */ +class HttpsProxyAgent extends agent_base_1.Agent { + constructor(_opts) { + let opts; + if (typeof _opts === 'string') { + opts = url_1.default.parse(_opts); + } + else { + opts = _opts; + } + if (!opts) { + throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!'); + } + debug('creating new HttpsProxyAgent instance: %o', opts); + super(opts); + const proxy = Object.assign({}, opts); + // If `true`, then connect to the proxy server over TLS. + // Defaults to `false`. + this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol); + // Prefer `hostname` over `host`, and set the `port` if needed. + proxy.host = proxy.hostname || proxy.host; + if (typeof proxy.port === 'string') { + proxy.port = parseInt(proxy.port, 10); + } + if (!proxy.port && proxy.host) { + proxy.port = this.secureProxy ? 443 : 80; + } + // ALPN is supported by Node.js >= v5. + // attempt to negotiate http/1.1 for proxy servers that support http/2 + if (this.secureProxy && !('ALPNProtocols' in proxy)) { + proxy.ALPNProtocols = ['http 1.1']; + } + if (proxy.host && proxy.path) { + // If both a `host` and `path` are specified then it's most likely + // the result of a `url.parse()` call... we need to remove the + // `path` portion so that `net.connect()` doesn't attempt to open + // that as a Unix socket file. + delete proxy.path; + delete proxy.pathname; + } + this.proxy = proxy; + } + /** + * Called when the node-core HTTP client library is creating a + * new HTTP request. + * + * @api protected + */ + callback(req, opts) { + return __awaiter(this, void 0, void 0, function* () { + const { proxy, secureProxy } = this; + // Create a socket connection to the proxy server. + let socket; + if (secureProxy) { + debug('Creating `tls.Socket`: %o', proxy); + socket = tls_1.default.connect(proxy); + } + else { + debug('Creating `net.Socket`: %o', proxy); + socket = net_1.default.connect(proxy); + } + const headers = Object.assign({}, proxy.headers); + const hostname = `${opts.host}:${opts.port}`; + let payload = `CONNECT ${hostname} HTTP/1.1\r\n`; + // Inject the `Proxy-Authorization` header if necessary. + if (proxy.auth) { + headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`; + } + // The `Host` header should only include the port + // number when it is not the default port. + let { host, port, secureEndpoint } = opts; + if (!isDefaultPort(port, secureEndpoint)) { + host += `:${port}`; + } + headers.Host = host; + headers.Connection = 'close'; + for (const name of Object.keys(headers)) { + payload += `${name}: ${headers[name]}\r\n`; + } + const proxyResponsePromise = parse_proxy_response_1.default(socket); + socket.write(`${payload}\r\n`); + const { statusCode, buffered } = yield proxyResponsePromise; + if (statusCode === 200) { + req.once('socket', resume); + if (opts.secureEndpoint) { + // The proxy is connecting to a TLS server, so upgrade + // this socket connection to a TLS connection. + debug('Upgrading socket connection to TLS'); + const servername = opts.servername || opts.host; + return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket, + servername })); + } + return socket; + } + // Some other status code that's not 200... need to re-play the HTTP + // header "data" events onto the socket once the HTTP machinery is + // attached so that the node core `http` can parse and handle the + // error status code. + // Close the original socket, and a new "fake" socket is returned + // instead, so that the proxy doesn't get the HTTP request + // written to it (which may contain `Authorization` headers or other + // sensitive data). + // + // See: https://hackerone.com/reports/541502 + socket.destroy(); + const fakeSocket = new net_1.default.Socket({ writable: false }); + fakeSocket.readable = true; + // Need to wait for the "socket" event to re-play the "data" events. + req.once('socket', (s) => { + debug('replaying proxy buffer for failed request'); + assert_1.default(s.listenerCount('data') > 0); + // Replay the "buffered" Buffer onto the fake `socket`, since at + // this point the HTTP module machinery has been hooked up for + // the user. + s.push(buffered); + s.push(null); + }); + return fakeSocket; + }); + } +} +exports["default"] = HttpsProxyAgent; +function resume(socket) { + socket.resume(); +} +function isDefaultPort(port, secure) { + return Boolean((!secure && port === 80) || (secure && port === 443)); +} +function isHTTPS(protocol) { + return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false; +} +function omit(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; +} +//# sourceMappingURL=agent.js.map + +/***/ }), + +/***/ 7219: +/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const agent_1 = __importDefault(__nccwpck_require__(5098)); +function createHttpsProxyAgent(opts) { + return new agent_1.default(opts); +} +(function (createHttpsProxyAgent) { + createHttpsProxyAgent.HttpsProxyAgent = agent_1.default; + createHttpsProxyAgent.prototype = agent_1.default.prototype; +})(createHttpsProxyAgent || (createHttpsProxyAgent = {})); +module.exports = createHttpsProxyAgent; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 595: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const debug_1 = __importDefault(__nccwpck_require__(8237)); +const debug = debug_1.default('https-proxy-agent:parse-proxy-response'); +function parseProxyResponse(socket) { + return new Promise((resolve, reject) => { + // we need to buffer any HTTP traffic that happens with the proxy before we get + // the CONNECT response, so that if the response is anything other than an "200" + // response code, then we can re-play the "data" events on the socket once the + // HTTP parser is hooked up... + let buffersLength = 0; + const buffers = []; + function read() { + const b = socket.read(); + if (b) + ondata(b); + else + socket.once('readable', read); + } + function cleanup() { + socket.removeListener('end', onend); + socket.removeListener('error', onerror); + socket.removeListener('close', onclose); + socket.removeListener('readable', read); + } + function onclose(err) { + debug('onclose had error %o', err); + } + function onend() { + debug('onend'); + } + function onerror(err) { + cleanup(); + debug('onerror %o', err); + reject(err); + } + function ondata(b) { + buffers.push(b); + buffersLength += b.length; + const buffered = Buffer.concat(buffers, buffersLength); + const endOfHeaders = buffered.indexOf('\r\n\r\n'); + if (endOfHeaders === -1) { + // keep buffering + debug('have not received end of HTTP headers yet...'); + read(); + return; + } + const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\r\n')); + const statusCode = +firstLine.split(' ')[1]; + debug('got proxy server response: %o', firstLine); + resolve({ + statusCode, + buffered + }); + } + socket.on('error', onerror); + socket.on('close', onclose); + socket.on('end', onend); + read(); + }); +} +exports["default"] = parseProxyResponse; +//# sourceMappingURL=parse-proxy-response.js.map + +/***/ }), + +/***/ 3287: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +function isObject(o) { + return Object.prototype.toString.call(o) === '[object Object]'; +} + +function isPlainObject(o) { + var ctor,prot; + + if (isObject(o) === false) return false; + + // If has modified constructor + ctor = o.constructor; + if (ctor === undefined) return true; + + // If has modified prototype + prot = ctor.prototype; + if (isObject(prot) === false) return false; + + // If constructor does not have an Object-specific method + if (prot.hasOwnProperty('isPrototypeOf') === false) { + return false; + } + + // Most likely a plain Object + return true; +} + +exports.isPlainObject = isPlainObject; + + +/***/ }), + +/***/ 1917: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + + +var loader = __nccwpck_require__(1161); +var dumper = __nccwpck_require__(8866); + + +function renamed(from, to) { + return function () { + throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + + 'Use yaml.' + to + ' instead, which is now safe by default.'); + }; +} + + +module.exports.Type = __nccwpck_require__(6073); +module.exports.Schema = __nccwpck_require__(1082); +module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(8562); +module.exports.JSON_SCHEMA = __nccwpck_require__(1035); +module.exports.CORE_SCHEMA = __nccwpck_require__(2011); +module.exports.DEFAULT_SCHEMA = __nccwpck_require__(8759); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.dump = dumper.dump; +module.exports.YAMLException = __nccwpck_require__(8179); + +// Re-export all types in case user wants to create custom schema +module.exports.types = { + binary: __nccwpck_require__(7900), + float: __nccwpck_require__(2705), + map: __nccwpck_require__(6150), + null: __nccwpck_require__(721), + pairs: __nccwpck_require__(6860), + set: __nccwpck_require__(9548), + timestamp: __nccwpck_require__(9212), + bool: __nccwpck_require__(4993), + int: __nccwpck_require__(1615), + merge: __nccwpck_require__(6104), + omap: __nccwpck_require__(9046), + seq: __nccwpck_require__(7283), + str: __nccwpck_require__(3619) +}; + +// Removed functions from JS-YAML 3.0.x +module.exports.safeLoad = renamed('safeLoad', 'load'); +module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); +module.exports.safeDump = renamed('safeDump', 'dump'); + + +/***/ }), + +/***/ 6829: +/***/ ((module) => { + +"use strict"; + + + +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} + + +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} + + +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; + + return [ sequence ]; +} + + +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + + +function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + + +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; + + +/***/ }), + +/***/ 8866: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable no-use-before-define*/ + +var common = __nccwpck_require__(6829); +var YAMLException = __nccwpck_require__(8179); +var DEFAULT_SCHEMA = __nccwpck_require__(8759); + +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +var CHAR_BOM = 0xFEFF; +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + +var ESCAPE_SEQUENCES = {}; + +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; + +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; + +var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) return {}; + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; +} + + +var QUOTING_TYPE_SINGLE = 1, + QUOTING_TYPE_DOUBLE = 2; + +function State(options) { + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options['forceQuotes'] || false; + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) + || (0x10000 <= c && c <= 0x10FFFF); +} + +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// Including s-white (for some reason, examples doesn't match specs in this aspect) +// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark +function isNsCharOrWhitespace(c) { + return isPrintable(c) + && c !== CHAR_BOM + // - b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} + +// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out +// c = flow-in ⇒ ns-plain-safe-in +// c = block-key ⇒ ns-plain-safe-out +// c = flow-key ⇒ ns-plain-safe-in +// [128] ns-plain-safe-out ::= ns-char +// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator +// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) +// | ( /* An ns-char preceding */ “#” ) +// | ( “:” /* Followed by an ns-plain-safe(c) */ ) +function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return ( + // ns-plain-safe + inblock ? // c = flow-in + cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + ) + // ns-plain-char + && c !== CHAR_SHARP // false on '#' + && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' + || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' + || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part + return isPrintable(c) && c !== CHAR_BOM + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} + +// Simplified test for values allowed as the last character in plain style. +function isPlainSafeLast(c) { + // just not whitespace or colon, it will be checked to be plain character later + return !isWhitespace(c) && c !== CHAR_COLON; +} + +// Same as 'string'.codePointAt(pos), but works in older browsers. +function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, + testAmbiguousType, quotingType, forceQuotes, inblock) { + + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(codePointAt(string, 0)) + && isPlainSafeLast(codePointAt(string, string.length - 1)); + + if (singleLineOnly || forceQuotes) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey, inblock) { + state.dump = (function () { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + } + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, + testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { + + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; +} + +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char = 0; + var escapeSeq; + + for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 0x10000) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level, value, false, false) || + (typeof value === 'undefined' && + writeNode(state, level, null, false, false))) { + + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === 'undefined' && + writeNode(state, level + 1, null, true, true, false, true))) { + + if (!compact || _result !== '') { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + + pairBuffer = ''; + if (_result !== '') pairBuffer += ', '; + + if (state.condenseFlow) pairBuffer += '"'; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || _result !== '') { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + if (explicit) { + if (type.multi && type.representName) { + state.tag = type.representName(object); + } else { + state.tag = type.tag; + } + } else { + state.tag = '?'; + } + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString.call(state.dump); + var inblock = block; + var tagStr; + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type === '[object Undefined]') { + return false; + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + // Need to encode all characters except those allowed by the spec: + // + // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ + // [36] ns-hex-digit ::= ns-dec-digit + // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ + // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ + // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” + // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” + // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” + // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” + // + // Also need to encode '!' because it has special meaning (end of tag prefix). + // + tagStr = encodeURI( + state.tag[0] === '!' ? state.tag.slice(1) : state.tag + ).replace(/!/g, '%21'); + + if (state.tag[0] === '!') { + tagStr = '!' + tagStr; + } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { + tagStr = '!!' + tagStr.slice(18); + } else { + tagStr = '!<' + tagStr + '>'; + } + + state.dump = tagStr + ' ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump(input, options) { + options = options || {}; + + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + var value = input; + + if (state.replacer) { + value = state.replacer.call({ '': value }, '', value); + } + + if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + + return ''; +} + +module.exports.dump = dump; + + +/***/ }), + +/***/ 8179: +/***/ ((module) => { + +"use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// + + + +function formatError(exception, compact) { + var where = '', message = exception.reason || '(unknown reason)'; + + if (!exception.mark) return message; + + if (exception.mark.name) { + where += 'in "' + exception.mark.name + '" '; + } + + where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; + + if (!compact && exception.mark.snippet) { + where += '\n\n' + exception.mark.snippet; + } + + return message + ' ' + where; +} + + +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = formatError(this, false); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } +} + + +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; + + +YAMLException.prototype.toString = function toString(compact) { + return this.name + ': ' + formatError(this, compact); +}; + + +module.exports = YAMLException; + + +/***/ }), + +/***/ 1161: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable max-len,no-use-before-define*/ + +var common = __nccwpck_require__(6829); +var YAMLException = __nccwpck_require__(8179); +var makeSnippet = __nccwpck_require__(6975); +var DEFAULT_SCHEMA = __nccwpck_require__(8759); + + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + + +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; + + +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; + + +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} + +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + + +function State(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.onWarning = options['onWarning'] || null; + // (Hidden) Remove? makes the loader to expect YAML 1.1 documents + // if such documents have no explicit %YAML directive + this.legacy = options['legacy'] || false; + + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + // position of first leading tab in the current line, + // used to make sure there are no tabs in the indentation + this.firstTabInLine = -1; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + +} + + +function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; + + mark.snippet = makeSnippet(mark); + + return new YAMLException(message, mark); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + + +var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, 'tag prefix is malformed: ' + prefix); + } + + state.tagMap[handle] = prefix; + } +}; + + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, + startLine, startLineStart, startPos) { + + var index, quantity; + + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + // used for this specific key only because Object.defineProperty is slow + if (keyNode === '__proto__') { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _lineStart, + _pos, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = Object.create(null), + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } else if (ch === 0x2C/* , */) { + // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 + throwError(state, "expected the node content, but found ','"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; // Save the current line. + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _keyLine, + _keyLineStart, + _keyPos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = Object.create(null), + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + // Neither implicit nor explicit notation. + // Reading is done. Go to the epilogue. + break; + } + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, 'tag name is malformed: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) return false; + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + } else if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== '!') { + if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + } else { + // looking for multi type + type = null; + typeList = state.typeMap.multi[state.kind || 'fallback']; + + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type = typeList[typeIndex]; + break; + } + } + } + + if (!type) { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = Object.create(null); + state.anchorMap = Object.create(null); + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) break; + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; +} + + +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + + +function load(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException('expected a single document in the stream, but found more'); +} + + +module.exports.loadAll = loadAll; +module.exports.load = load; + + +/***/ }), + +/***/ 1082: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable max-len*/ + +var YAMLException = __nccwpck_require__(8179); +var Type = __nccwpck_require__(6073); + + +function compileList(schema, name) { + var result = []; + + schema[name].forEach(function (currentType) { + var newIndex = result.length; + + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && + previousType.kind === currentType.kind && + previousType.multi === currentType.multi) { + + newIndex = previousIndex; + } + }); + + result[newIndex] = currentType; + }); + + return result; +} + + +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + + function collectType(type) { + if (type.multi) { + result.multi[type.kind].push(type); + result.multi['fallback'].push(type); + } else { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} + + +function Schema(definition) { + return this.extend(definition); +} + + +Schema.prototype.extend = function extend(definition) { + var implicit = []; + var explicit = []; + + if (definition instanceof Type) { + // Schema.extend(type) + explicit.push(definition); + + } else if (Array.isArray(definition)) { + // Schema.extend([ type1, type2, ... ]) + explicit = explicit.concat(definition); + + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) + if (definition.implicit) implicit = implicit.concat(definition.implicit); + if (definition.explicit) explicit = explicit.concat(definition.explicit); + + } else { + throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + + 'or a schema definition ({ implicit: [...], explicit: [...] })'); + } + + implicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + + if (type.multi) { + throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + } + }); + + explicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + }); + + var result = Object.create(Schema.prototype); + + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + + result.compiledImplicit = compileList(result, 'implicit'); + result.compiledExplicit = compileList(result, 'explicit'); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + + return result; +}; + + +module.exports = Schema; + + +/***/ }), + +/***/ 2011: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. + + + + + +module.exports = __nccwpck_require__(1035); + + +/***/ }), + +/***/ 8759: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) + + + + + +module.exports = (__nccwpck_require__(2011).extend)({ + implicit: [ + __nccwpck_require__(9212), + __nccwpck_require__(6104) + ], + explicit: [ + __nccwpck_require__(7900), + __nccwpck_require__(9046), + __nccwpck_require__(6860), + __nccwpck_require__(9548) + ] +}); + + +/***/ }), + +/***/ 8562: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 + + + + + +var Schema = __nccwpck_require__(1082); + + +module.exports = new Schema({ + explicit: [ + __nccwpck_require__(3619), + __nccwpck_require__(7283), + __nccwpck_require__(6150) + ] +}); + + +/***/ }), + +/***/ 1035: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. + + + + + +module.exports = (__nccwpck_require__(8562).extend)({ + implicit: [ + __nccwpck_require__(721), + __nccwpck_require__(4993), + __nccwpck_require__(1615), + __nccwpck_require__(2705) + ] +}); + + +/***/ }), + +/***/ 6975: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + + +var common = __nccwpck_require__(6829); + + +// get snippet for a single line, respecting maxLength +function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + var head = ''; + var tail = ''; + var maxHalfLength = Math.floor(maxLineLength / 2) - 1; + + if (position - lineStart > maxHalfLength) { + head = ' ... '; + lineStart = position - maxHalfLength + head.length; + } + + if (lineEnd - position > maxHalfLength) { + tail = ' ...'; + lineEnd = position + maxHalfLength - tail.length; + } + + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, + pos: position - lineStart + head.length // relative position + }; +} + + +function padStart(string, max) { + return common.repeat(' ', max - string.length) + string; +} + + +function makeSnippet(mark, options) { + options = Object.create(options || null); + + if (!mark.buffer) return null; + + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== 'number') options.indent = 1; + if (typeof options.linesBefore !== 'number') options.linesBefore = 3; + if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + + var re = /\r?\n|\r|\0/g; + var lineStarts = [ 0 ]; + var lineEnds = []; + var match; + var foundLineNo = -1; + + while ((match = re.exec(mark.buffer))) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); + + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + + var result = '', i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n' + result; + } + + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + } + + return result.replace(/\n$/, ''); +} + + +module.exports = makeSnippet; + + +/***/ }), + +/***/ 6073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var YAMLException = __nccwpck_require__(8179); + +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'multi', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'representName', + 'defaultStyle', + 'styleAliases' +]; + +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.options = options; // keep original options in case user wants to extend this type later + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.representName = options['representName'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.multi = options['multi'] || false; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +module.exports = Type; + + +/***/ }), + +/***/ 7900: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable no-bitwise*/ + + +var Type = __nccwpck_require__(6073); + + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + +function resolveYamlBinary(data) { + if (data === null) return false; + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} + +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + return new Uint8Array(result); +} + +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]'; +} + +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); + + +/***/ }), + +/***/ 4993: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 2705: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var common = __nccwpck_require__(6829); +var Type = __nccwpck_require__(6073); + +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 1615: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var common = __nccwpck_require__(6829); +var Type = __nccwpck_require__(6073); + +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} + +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} + +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} + +function resolveYamlInteger(data) { + if (data === null) return false; + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) return false; + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'o') { + // base 8 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + } + + // base 10 (except 0) + + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; + + return true; +} + +function constructYamlInteger(data) { + var value = data, sign = 1, ch; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); + + +/***/ }), + +/***/ 6150: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); + + +/***/ }), + +/***/ 6104: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + + +/***/ }), + +/***/ 721: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; }, + empty: function () { return ''; } + }, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 9046: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + + +/***/ }), + +/***/ 6860: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +var _toString = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + + +/***/ }), + +/***/ 7283: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); + + +/***/ }), + +/***/ 9548: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + + +/***/ }), + +/***/ 3619: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); + + +/***/ }), + +/***/ 9212: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(6073); + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + + +/***/ }), + +/***/ 7426: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = __nccwpck_require__(3765) + + +/***/ }), + +/***/ 3583: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + + + +/** + * Module dependencies. + * @private + */ + +var db = __nccwpck_require__(7426) +var extname = (__nccwpck_require__(1017).extname) + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} + + +/***/ }), + +/***/ 900: +/***/ ((module) => { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ 467: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var Stream = _interopDefault(__nccwpck_require__(2781)); +var http = _interopDefault(__nccwpck_require__(3685)); +var Url = _interopDefault(__nccwpck_require__(7310)); +var whatwgUrl = _interopDefault(__nccwpck_require__(8665)); +var https = _interopDefault(__nccwpck_require__(5687)); +var zlib = _interopDefault(__nccwpck_require__(9796)); + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = (__nccwpck_require__(2877).convert); +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + const headers = new Headers(opts.headers); + + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + + get url() { + return this[INTERNALS$1].url || ''; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get redirected() { + return this[INTERNALS$1].counter > 0; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } + + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); +} + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; + + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + get signal() { + return this[INTERNALS$2].signal; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } + + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +const URL$1 = Url.URL || whatwgUrl.URL; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; + +const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; + + return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); +}; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https : http).request; + const signal = request.signal; + + let response = null; + + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + request.body.destroy(error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + const req = send(options); + let reqTimeout; + + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } + + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + + if (!isDomainOrSubdomain(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports["default"] = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; + + +/***/ }), + +/***/ 1223: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var wrappy = __nccwpck_require__(2940) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + + +/***/ }), + +/***/ 4833: +/***/ ((module) => { + +"use strict"; +function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i { + +"use strict"; + +const os = __nccwpck_require__(2037); +const hasFlag = __nccwpck_require__(1621); + +const env = process.env; + +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + forceColor = false; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = true; +} +if ('FORCE_COLOR' in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} + +function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + + const min = forceColor ? 1 : 0; + + if (process.platform === 'win32') { + // Node.js 7.5.0 is the first version of Node.js to include a patch to + // libuv that enables 256 color output on Windows. Anything earlier and it + // won't work. However, here we target Node.js 8 at minimum as it is an LTS + // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows + // release that supports 256 colors. Windows 10 build 14931 is the first release + // that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(process.versions.node.split('.')[0]) >= 8 && + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + if (env.TERM === 'dumb') { + return min; + } + + return min; +} + +function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); +} + +module.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) +}; + + +/***/ }), + +/***/ 4256: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var punycode = __nccwpck_require__(5477); +var mappingTable = __nccwpck_require__(2020); + +var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 +}; + +function normalize(str) { // fix bug in v8 + return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); +} + +function findStatus(val) { + var start = 0; + var end = mappingTable.length - 1; + + while (start <= end) { + var mid = Math.floor((start + end) / 2); + + var target = mappingTable[mid]; + if (target[0][0] <= val && target[0][1] >= val) { + return target; + } else if (target[0][0] > val) { + end = mid - 1; + } else { + start = mid + 1; + } + } + + return null; +} + +var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + +function countSymbols(string) { + return string + // replace every surrogate pair with a BMP symbol + .replace(regexAstralSymbols, '_') + // then get the length + .length; +} + +function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; + + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); + + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } + + processed += String.fromCodePoint(codePoint); + break; + } + } + + return { + string: processed, + error: hasError + }; +} + +var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + +function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + } + + var error = false; + + if (normalize(label) !== label || + (label[3] === "-" && label[4] === "-") || + label[0] === "-" || label[label.length - 1] === "-" || + label.indexOf(".") !== -1 || + label.search(combiningMarksRegex) === 0) { + error = true; + } + + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || + (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && + status[1] !== "valid" && status[1] !== "deviation")) { + error = true; + break; + } + } + + return { + label: label, + error: error + }; +} + +function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); + + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch(e) { + result.error = true; + } + } + + return { + string: labels.join("."), + error: result.error + }; +} + +module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch(e) { + result.error = true; + return l; + } + }); + + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } + + for (var i=0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } + + if (result.error) return null; + return labels.join("."); +}; + +module.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + + return { + domain: result.string, + error: result.error + }; +}; + +module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + + +/***/ }), + +/***/ 4294: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(4219); + + +/***/ }), + +/***/ 4219: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var net = __nccwpck_require__(1808); +var tls = __nccwpck_require__(4404); +var http = __nccwpck_require__(3685); +var https = __nccwpck_require__(5687); +var events = __nccwpck_require__(2361); +var assert = __nccwpck_require__(9491); +var util = __nccwpck_require__(3837); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 829: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TypeName = undefined; +exports.parse = parse; +exports.toCodePoints = toCodePoints; + +var _regex = __nccwpck_require__(507); + +var _regex2 = _interopRequireDefault(_regex); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var TypeName = exports.TypeName = 'emoji'; +// Copyright Twitter Inc. Licensed under MIT +// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md +function parse(text, options) { + var assetType = options && options.assetType ? options.assetType : 'svg'; + var getTwemojiUrl = options && options.buildUrl ? options.buildUrl : function (codepoints, assetType) { + return assetType === 'png' ? 'https://twemoji.maxcdn.com/2/72x72/' + codepoints + '.png' : 'https://twemoji.maxcdn.com/2/svg/' + codepoints + '.svg'; + }; + + var entities = []; + + _regex2.default.lastIndex = 0; + while (true) { + var result = _regex2.default.exec(text); + if (!result) { + break; + } + + var emojiText = result[0]; + var codepoints = toCodePoints(removeVS16s(emojiText)).join('-'); + + entities.push({ + url: codepoints ? getTwemojiUrl(codepoints, assetType) : '', + indices: [result.index, _regex2.default.lastIndex], + text: emojiText, + type: TypeName + }); + } + return entities; +} + +var vs16RegExp = /\uFE0F/g; +// avoid using a string literal like '\u200D' here because minifiers expand it inline +var zeroWidthJoiner = String.fromCharCode(0x200d); + +var removeVS16s = function removeVS16s(rawEmoji) { + return rawEmoji.indexOf(zeroWidthJoiner) < 0 ? rawEmoji.replace(vs16RegExp, '') : rawEmoji; +}; + +function toCodePoints(unicodeSurrogates) { + var points = []; + var char = 0; + var previous = 0; + var i = 0; + while (i < unicodeSurrogates.length) { + char = unicodeSurrogates.charCodeAt(i++); + if (previous) { + points.push((0x10000 + (previous - 0xd800 << 10) + (char - 0xdc00)).toString(16)); + previous = 0; + } else if (char > 0xd800 && char <= 0xdbff) { + previous = char; + } else { + points.push(char.toString(16)); + } + } + return points; +} + +/***/ }), + +/***/ 507: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +// Copyright Twitter Inc. Licensed under MIT +// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md + +// This file is auto-generated +exports["default"] = /(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; + +/***/ }), + +/***/ 8274: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.FormDataHelper = void 0; +const helpers_1 = __nccwpck_require__(1120); +// This class is partially inspired by https://github.com/form-data/form-data/blob/master/lib/form_data.js +// All credits to their authors. +class FormDataHelper { + constructor() { + this._boundary = ''; + this._chunks = []; + } + bodyAppend(...values) { + const allAsBuffer = values.map(val => val instanceof Buffer ? val : Buffer.from(val)); + this._chunks.push(...allAsBuffer); + } + append(field, value, contentType) { + const convertedValue = value instanceof Buffer ? value : value.toString(); + const header = this.getMultipartHeader(field, convertedValue, contentType); + this.bodyAppend(header, convertedValue, FormDataHelper.LINE_BREAK); + } + getHeaders() { + return { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary(), + }; + } + /** Length of form-data (including footer length). */ + getLength() { + return this._chunks.reduce((acc, cur) => acc + cur.length, this.getMultipartFooter().length); + } + getBuffer() { + const allChunks = [...this._chunks, this.getMultipartFooter()]; + const totalBuffer = Buffer.alloc(this.getLength()); + let i = 0; + for (const chunk of allChunks) { + for (let j = 0; j < chunk.length; i++, j++) { + totalBuffer[i] = chunk[j]; + } + } + return totalBuffer; + } + getBoundary() { + if (!this._boundary) { + this.generateBoundary(); + } + return this._boundary; + } + generateBoundary() { + // This generates a 50 character boundary similar to those used by Firefox. + let boundary = '--------------------------'; + for (let i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 10).toString(16); + } + this._boundary = boundary; + } + getMultipartHeader(field, value, contentType) { + // In this lib no need to guess more the content type, octet stream is ok of buffers + if (!contentType) { + contentType = value instanceof Buffer ? FormDataHelper.DEFAULT_CONTENT_TYPE : ''; + } + const headers = { + 'Content-Disposition': ['form-data', `name="${field}"`], + 'Content-Type': contentType, + }; + let contents = ''; + for (const [prop, header] of Object.entries(headers)) { + // skip nullish headers. + if (!header.length) { + continue; + } + contents += prop + ': ' + (0, helpers_1.arrayWrap)(header).join('; ') + FormDataHelper.LINE_BREAK; + } + return '--' + this.getBoundary() + FormDataHelper.LINE_BREAK + contents + FormDataHelper.LINE_BREAK; + } + getMultipartFooter() { + if (this._footerChunk) { + return this._footerChunk; + } + return this._footerChunk = Buffer.from('--' + this.getBoundary() + '--' + FormDataHelper.LINE_BREAK); + } +} +exports.FormDataHelper = FormDataHelper; +FormDataHelper.LINE_BREAK = '\r\n'; +FormDataHelper.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + + +/***/ }), + +/***/ 8291: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OAuth1Helper = void 0; +const crypto = __importStar(__nccwpck_require__(6113)); +class OAuth1Helper { + constructor(options) { + this.nonceLength = 32; + this.consumerKeys = options.consumerKeys; + } + static percentEncode(str) { + return encodeURIComponent(str) + .replace(/!/g, '%21') + .replace(/\*/g, '%2A') + .replace(/'/g, '%27') + .replace(/\(/g, '%28') + .replace(/\)/g, '%29'); + } + hash(base, key) { + return crypto + .createHmac('sha1', key) + .update(base) + .digest('base64'); + } + authorize(request, accessTokens = {}) { + const oauthInfo = { + oauth_consumer_key: this.consumerKeys.key, + oauth_nonce: this.getNonce(), + oauth_signature_method: 'HMAC-SHA1', + oauth_timestamp: this.getTimestamp(), + oauth_version: '1.0', + }; + if (accessTokens.key !== undefined) { + oauthInfo.oauth_token = accessTokens.key; + } + if (!request.data) { + request.data = {}; + } + oauthInfo.oauth_signature = this.getSignature(request, accessTokens.secret, oauthInfo); + return oauthInfo; + } + toHeader(oauthInfo) { + const sorted = sortObject(oauthInfo); + let header_value = 'OAuth '; + for (const element of sorted) { + if (element.key.indexOf('oauth_') !== 0) { + continue; + } + header_value += OAuth1Helper.percentEncode(element.key) + '="' + OAuth1Helper.percentEncode(element.value) + '",'; + } + return { + // Remove the last , + Authorization: header_value.slice(0, header_value.length - 1), + }; + } + getNonce() { + const wordCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + let result = ''; + for (let i = 0; i < this.nonceLength; i++) { + result += wordCharacters[Math.trunc(Math.random() * wordCharacters.length)]; + } + return result; + } + getTimestamp() { + return Math.trunc(new Date().getTime() / 1000); + } + getSignature(request, tokenSecret, oauthInfo) { + return this.hash(this.getBaseString(request, oauthInfo), this.getSigningKey(tokenSecret)); + } + getSigningKey(tokenSecret) { + return OAuth1Helper.percentEncode(this.consumerKeys.secret) + '&' + OAuth1Helper.percentEncode(tokenSecret || ''); + } + getBaseString(request, oauthInfo) { + return request.method.toUpperCase() + '&' + + OAuth1Helper.percentEncode(this.getBaseUrl(request.url)) + '&' + + OAuth1Helper.percentEncode(this.getParameterString(request, oauthInfo)); + } + getParameterString(request, oauthInfo) { + const baseStringData = sortObject(percentEncodeData(mergeObject(oauthInfo, mergeObject(request.data, deParamUrl(request.url))))); + let dataStr = ''; + for (const { key, value } of baseStringData) { + // check if the value is an array + // this means that this key has multiple values + if (value && Array.isArray(value)) { + // sort the array first + value.sort(); + let valString = ''; + // serialize all values for this key: e.g. formkey=formvalue1&formkey=formvalue2 + value.forEach((item, i) => { + valString += key + '=' + item; + if (i < value.length) { + valString += '&'; + } + }); + dataStr += valString; + } + else { + dataStr += key + '=' + value + '&'; + } + } + // Remove the last character + return dataStr.slice(0, dataStr.length - 1); + } + getBaseUrl(url) { + return url.split('?')[0]; + } +} +exports.OAuth1Helper = OAuth1Helper; +exports["default"] = OAuth1Helper; +// Helper functions // +function mergeObject(obj1, obj2) { + return { + ...obj1 || {}, + ...obj2 || {}, + }; +} +function sortObject(data) { + return Object.keys(data) + .sort() + .map(key => ({ key, value: data[key] })); +} +function deParam(string) { + const splitted = string.split('&'); + const data = {}; + for (const coupleKeyValue of splitted) { + const [key, value = ''] = coupleKeyValue.split('='); + // check if the key already exists + // this can occur if the QS part of the url contains duplicate keys like this: ?formkey=formvalue1&formkey=formvalue2 + if (data[key]) { + // the key exists already + if (!Array.isArray(data[key])) { + // replace the value with an array containing the already present value + data[key] = [data[key]]; + } + // and add the new found value to it + data[key].push(decodeURIComponent(value)); + } + else { + // it doesn't exist, just put the found value in the data object + data[key] = decodeURIComponent(value); + } + } + return data; +} +function deParamUrl(url) { + const tmp = url.split('?'); + if (tmp.length === 1) + return {}; + return deParam(tmp[1]); +} +function percentEncodeData(data) { + const result = {}; + for (const key in data) { + let value = data[key]; + // check if the value is an array + if (value && Array.isArray(value)) { + value = value.map(v => OAuth1Helper.percentEncode(v)); + } + else { + value = OAuth1Helper.percentEncode(value); + } + result[OAuth1Helper.percentEncode(key)] = value; + } + return result; +} + + +/***/ }), + +/***/ 9791: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OAuth2Helper = void 0; +const crypto = __importStar(__nccwpck_require__(6113)); +class OAuth2Helper { + static getCodeVerifier() { + return this.generateRandomString(128); + } + static getCodeChallengeFromVerifier(verifier) { + return this.escapeBase64Url(crypto + .createHash('sha256') + .update(verifier) + .digest('base64')); + } + static getAuthHeader(clientId, clientSecret) { + const key = encodeURIComponent(clientId) + ':' + encodeURIComponent(clientSecret); + return Buffer.from(key).toString('base64'); + } + static generateRandomString(length) { + let text = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'; + for (let i = 0; i < length; i++) { + text += possible[Math.floor(Math.random() * possible.length)]; + } + return text; + } + static escapeBase64Url(string) { + return string.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); + } +} +exports.OAuth2Helper = OAuth2Helper; + + +/***/ }), + +/***/ 3768: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RequestHandlerHelper = void 0; +const https_1 = __nccwpck_require__(5687); +const settings_1 = __nccwpck_require__(6273); +const TweetStream_1 = __importDefault(__nccwpck_require__(9362)); +const types_1 = __nccwpck_require__(1638); +const zlib = __importStar(__nccwpck_require__(9796)); +class RequestHandlerHelper { + constructor(requestData) { + this.requestData = requestData; + this.requestErrorHandled = false; + this.responseData = []; + } + /* Request helpers */ + get hrefPathname() { + const url = this.requestData.url; + return url.hostname + url.pathname; + } + isCompressionDisabled() { + return !this.requestData.compression || this.requestData.compression === 'identity'; + } + isFormEncodedEndpoint() { + return this.requestData.url.href.startsWith('https://api.twitter.com/oauth/'); + } + /* Error helpers */ + createRequestError(error) { + if (settings_1.TwitterApiV2Settings.debug) { + settings_1.TwitterApiV2Settings.logger.log('Request error:', error); + } + return new types_1.ApiRequestError('Request failed.', { + request: this.req, + error, + }); + } + createPartialResponseError(error, abortClose) { + const res = this.res; + let message = `Request failed with partial response with HTTP code ${res.statusCode}`; + if (abortClose) { + message += ' (connection abruptly closed)'; + } + else { + message += ' (parse error)'; + } + return new types_1.ApiPartialResponseError(message, { + request: this.req, + response: this.res, + responseError: error, + rawContent: Buffer.concat(this.responseData).toString(), + }); + } + formatV1Errors(errors) { + return errors + .map(({ code, message }) => `${message} (Twitter code ${code})`) + .join(', '); + } + formatV2Error(error) { + return `${error.title}: ${error.detail} (see ${error.type})`; + } + createResponseError({ res, data, rateLimit, code }) { + var _a; + if (settings_1.TwitterApiV2Settings.debug) { + settings_1.TwitterApiV2Settings.logger.log(`Request failed with code ${code}, data:`, data); + settings_1.TwitterApiV2Settings.logger.log('Response headers:', res.headers); + } + // Errors formatting. + let errorString = `Request failed with code ${code}`; + if ((_a = data === null || data === void 0 ? void 0 : data.errors) === null || _a === void 0 ? void 0 : _a.length) { + const errors = data.errors; + if ('code' in errors[0]) { + errorString += ' - ' + this.formatV1Errors(errors); + } + else { + errorString += ' - ' + this.formatV2Error(data); + } + } + return new types_1.ApiResponseError(errorString, { + code, + data, + headers: res.headers, + request: this.req, + response: res, + rateLimit, + }); + } + /* Response helpers */ + getResponseDataStream(res) { + if (this.isCompressionDisabled()) { + return res; + } + const contentEncoding = (res.headers['content-encoding'] || 'identity').trim().toLowerCase(); + if (contentEncoding === 'br') { + const brotli = zlib.createBrotliDecompress({ + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH, + }); + res.pipe(brotli); + return brotli; + } + if (contentEncoding === 'gzip') { + const gunzip = zlib.createGunzip({ + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH, + }); + res.pipe(gunzip); + return gunzip; + } + if (contentEncoding === 'deflate') { + const inflate = zlib.createInflate({ + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH, + }); + res.pipe(inflate); + return inflate; + } + return res; + } + detectResponseType(res) { + var _a, _b; + // Auto parse if server responds with JSON body + if (((_a = res.headers['content-type']) === null || _a === void 0 ? void 0 : _a.includes('application/json')) || ((_b = res.headers['content-type']) === null || _b === void 0 ? void 0 : _b.includes('application/problem+json'))) { + return 'json'; + } + // f-e oauth token endpoints + else if (this.isFormEncodedEndpoint()) { + return 'url'; + } + return 'text'; + } + getParsedResponse(res) { + const data = this.responseData; + const mode = this.requestData.forceParseMode || this.detectResponseType(res); + if (mode === 'buffer') { + return Buffer.concat(data); + } + else if (mode === 'text') { + return Buffer.concat(data).toString(); + } + else if (mode === 'json') { + const asText = Buffer.concat(data).toString(); + return asText.length ? JSON.parse(asText) : undefined; + } + else if (mode === 'url') { + const asText = Buffer.concat(data).toString(); + const formEntries = {}; + for (const [item, value] of new URLSearchParams(asText)) { + formEntries[item] = value; + } + return formEntries; + } + else { + // mode === 'none' + return undefined; + } + } + getRateLimitFromResponse(res) { + let rateLimit = undefined; + if (res.headers['x-rate-limit-limit']) { + rateLimit = { + limit: Number(res.headers['x-rate-limit-limit']), + remaining: Number(res.headers['x-rate-limit-remaining']), + reset: Number(res.headers['x-rate-limit-reset']), + }; + if (this.requestData.rateLimitSaver) { + this.requestData.rateLimitSaver(rateLimit); + } + } + return rateLimit; + } + /* Request event handlers */ + onSocketEventHandler(reject, socket) { + socket.on('close', this.onSocketCloseHandler.bind(this, reject)); + } + onSocketCloseHandler(reject) { + this.req.removeAllListeners('timeout'); + const res = this.res; + if (res) { + // Response ok, res.close/res.end can handle request ending + return; + } + if (!this.requestErrorHandled) { + return reject(this.createRequestError(new Error('Socket closed without any information.'))); + } + // else: other situation + } + requestErrorHandler(reject, requestError) { + var _a, _b; + (_b = (_a = this.requestData).requestEventDebugHandler) === null || _b === void 0 ? void 0 : _b.call(_a, 'request-error', { requestError }); + this.requestErrorHandled = true; + reject(this.createRequestError(requestError)); + } + timeoutErrorHandler() { + this.requestErrorHandled = true; + this.req.destroy(new Error('Request timeout.')); + } + /* Response event handlers */ + classicResponseHandler(resolve, reject, res) { + this.res = res; + const dataStream = this.getResponseDataStream(res); + // Register the response data + dataStream.on('data', chunk => this.responseData.push(chunk)); + dataStream.on('end', this.onResponseEndHandler.bind(this, resolve, reject)); + dataStream.on('close', this.onResponseCloseHandler.bind(this, resolve, reject)); + // Debug handlers + if (this.requestData.requestEventDebugHandler) { + this.requestData.requestEventDebugHandler('response', { res }); + res.on('aborted', error => this.requestData.requestEventDebugHandler('response-aborted', { error })); + res.on('error', error => this.requestData.requestEventDebugHandler('response-error', { error })); + res.on('close', () => this.requestData.requestEventDebugHandler('response-close', { data: this.responseData })); + res.on('end', () => this.requestData.requestEventDebugHandler('response-end')); + } + } + onResponseEndHandler(resolve, reject) { + const rateLimit = this.getRateLimitFromResponse(this.res); + let data; + try { + data = this.getParsedResponse(this.res); + } + catch (e) { + reject(this.createPartialResponseError(e, false)); + return; + } + // Handle bad error codes + const code = this.res.statusCode; + if (code >= 400) { + reject(this.createResponseError({ data, res: this.res, rateLimit, code })); + return; + } + if (settings_1.TwitterApiV2Settings.debug) { + settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${this.res.statusCode}`); + settings_1.TwitterApiV2Settings.logger.log('Response body:', data); + } + resolve({ + data, + headers: this.res.headers, + rateLimit, + }); + } + onResponseCloseHandler(resolve, reject) { + const res = this.res; + if (res.aborted) { + // Try to parse the request (?) + try { + this.getParsedResponse(this.res); + // Ok, try to resolve normally the request + return this.onResponseEndHandler(resolve, reject); + } + catch (e) { + // Parse error, just drop with content + return reject(this.createPartialResponseError(e, true)); + } + } + if (!res.complete) { + return reject(this.createPartialResponseError(new Error('Response has been interrupted before response could be parsed.'), true)); + } + // else: end has been called + } + streamResponseHandler(resolve, reject, res) { + const code = res.statusCode; + if (code < 400) { + if (settings_1.TwitterApiV2Settings.debug) { + settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${res.statusCode} (starting stream)`); + } + const dataStream = this.getResponseDataStream(res); + // HTTP code ok, consume stream + resolve({ req: this.req, res: dataStream, originalResponse: res, requestData: this.requestData }); + } + else { + // Handle response normally, can only rejects + this.classicResponseHandler(() => undefined, reject, res); + } + } + /* Wrappers for request lifecycle */ + debugRequest() { + const url = this.requestData.url; + settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]`, this.requestData.options); + if (url.search) { + settings_1.TwitterApiV2Settings.logger.log('Request parameters:', [...url.searchParams.entries()].map(([key, value]) => `${key}: ${value}`)); + } + if (this.requestData.body) { + settings_1.TwitterApiV2Settings.logger.log('Request body:', this.requestData.body); + } + } + buildRequest() { + var _a; + const url = this.requestData.url; + const auth = url.username ? `${url.username}:${url.password}` : undefined; + const headers = (_a = this.requestData.options.headers) !== null && _a !== void 0 ? _a : {}; + if (this.requestData.compression === true || this.requestData.compression === 'brotli') { + headers['accept-encoding'] = 'br;q=1.0, gzip;q=0.8, deflate;q=0.5, *;q=0.1'; + } + else if (this.requestData.compression === 'gzip') { + headers['accept-encoding'] = 'gzip;q=1, deflate;q=0.5, *;q=0.1'; + } + else if (this.requestData.compression === 'deflate') { + headers['accept-encoding'] = 'deflate;q=1, *;q=0.1'; + } + if (settings_1.TwitterApiV2Settings.debug) { + this.debugRequest(); + } + this.req = (0, https_1.request)({ + ...this.requestData.options, + // Define URL params manually, addresses dependencies error https://github.com/PLhery/node-twitter-api-v2/issues/94 + host: url.hostname, + port: url.port || undefined, + path: url.pathname + url.search, + protocol: url.protocol, + auth, + headers, + }); + } + registerRequestEventDebugHandlers(req) { + req.on('close', () => this.requestData.requestEventDebugHandler('close')); + req.on('abort', () => this.requestData.requestEventDebugHandler('abort')); + req.on('socket', socket => { + this.requestData.requestEventDebugHandler('socket', { socket }); + socket.on('error', error => this.requestData.requestEventDebugHandler('socket-error', { socket, error })); + socket.on('connect', () => this.requestData.requestEventDebugHandler('socket-connect', { socket })); + socket.on('close', withError => this.requestData.requestEventDebugHandler('socket-close', { socket, withError })); + socket.on('end', () => this.requestData.requestEventDebugHandler('socket-end', { socket })); + socket.on('lookup', (...data) => this.requestData.requestEventDebugHandler('socket-lookup', { socket, data })); + socket.on('timeout', () => this.requestData.requestEventDebugHandler('socket-timeout', { socket })); + }); + } + makeRequest() { + this.buildRequest(); + return new Promise((resolve, reject) => { + const req = this.req; + // Handle request errors + req.on('error', this.requestErrorHandler.bind(this, reject)); + req.on('socket', this.onSocketEventHandler.bind(this, reject)); + req.on('response', this.classicResponseHandler.bind(this, resolve, reject)); + if (this.requestData.options.timeout) { + req.on('timeout', this.timeoutErrorHandler.bind(this)); + } + // Debug handlers + if (this.requestData.requestEventDebugHandler) { + this.registerRequestEventDebugHandlers(req); + } + if (this.requestData.body) { + req.write(this.requestData.body); + } + req.end(); + }); + } + async makeRequestAsStream() { + const { req, res, requestData, originalResponse } = await this.makeRequestAndResolveWhenReady(); + return new TweetStream_1.default(requestData, { req, res, originalResponse }); + } + makeRequestAndResolveWhenReady() { + this.buildRequest(); + return new Promise((resolve, reject) => { + const req = this.req; + // Handle request errors + req.on('error', this.requestErrorHandler.bind(this, reject)); + req.on('response', this.streamResponseHandler.bind(this, resolve, reject)); + if (this.requestData.body) { + req.write(this.requestData.body); + } + req.end(); + }); + } +} +exports.RequestHandlerHelper = RequestHandlerHelper; +exports["default"] = RequestHandlerHelper; + + +/***/ }), + +/***/ 6131: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClientRequestMaker = void 0; +const types_1 = __nccwpck_require__(1638); +const TweetStream_1 = __importDefault(__nccwpck_require__(9362)); +const helpers_1 = __nccwpck_require__(247); +const helpers_2 = __nccwpck_require__(1120); +const oauth1_helper_1 = __importDefault(__nccwpck_require__(8291)); +const request_handler_helper_1 = __importDefault(__nccwpck_require__(3768)); +const request_param_helper_1 = __importDefault(__nccwpck_require__(7954)); +const oauth2_helper_1 = __nccwpck_require__(9791); +class ClientRequestMaker { + constructor(settings) { + this.rateLimits = {}; + this.clientSettings = {}; + if (settings) { + this.clientSettings = settings; + } + } + /** @deprecated - Switch to `@twitter-api-v2/plugin-rate-limit` */ + getRateLimits() { + return this.rateLimits; + } + saveRateLimit(originalUrl, rateLimit) { + this.rateLimits[originalUrl] = rateLimit; + } + /** Send a new request and returns a wrapped `Promise`. */ + async send(requestParams) { + var _a, _b, _c, _d, _e; + // Pre-request config hooks + if ((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length) { + const possibleResponse = await this.applyPreRequestConfigHooks(requestParams); + if (possibleResponse) { + return possibleResponse; + } + } + const args = this.getHttpRequestArgs(requestParams); + const options = { + method: args.method, + headers: args.headers, + timeout: requestParams.timeout, + agent: this.clientSettings.httpAgent, + }; + const enableRateLimitSave = requestParams.enableRateLimitSave !== false; + if (args.body) { + request_param_helper_1.default.setBodyLengthHeader(options, args.body); + } + // Pre-request hooks + if ((_b = this.clientSettings.plugins) === null || _b === void 0 ? void 0 : _b.length) { + await this.applyPreRequestHooks(requestParams, args, options); + } + let request = new request_handler_helper_1.default({ + url: args.url, + options, + body: args.body, + rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined, + requestEventDebugHandler: requestParams.requestEventDebugHandler, + compression: (_d = (_c = requestParams.compression) !== null && _c !== void 0 ? _c : this.clientSettings.compression) !== null && _d !== void 0 ? _d : true, + forceParseMode: requestParams.forceParseMode, + }) + .makeRequest(); + if ((0, helpers_1.hasRequestErrorPlugins)(this)) { + request = this.applyResponseErrorHooks(requestParams, args, options, request); + } + const response = await request; + // Post-request hooks + if ((_e = this.clientSettings.plugins) === null || _e === void 0 ? void 0 : _e.length) { + const responseOverride = await this.applyPostRequestHooks(requestParams, args, options, response); + if (responseOverride) { + return responseOverride.value; + } + } + return response; + } + sendStream(requestParams) { + var _a, _b; + // Pre-request hooks + if (this.clientSettings.plugins) { + this.applyPreStreamRequestConfigHooks(requestParams); + } + const args = this.getHttpRequestArgs(requestParams); + const options = { + method: args.method, + headers: args.headers, + agent: this.clientSettings.httpAgent, + }; + const enableRateLimitSave = requestParams.enableRateLimitSave !== false; + const enableAutoConnect = requestParams.autoConnect !== false; + if (args.body) { + request_param_helper_1.default.setBodyLengthHeader(options, args.body); + } + const requestData = { + url: args.url, + options, + body: args.body, + rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined, + payloadIsError: requestParams.payloadIsError, + compression: (_b = (_a = requestParams.compression) !== null && _a !== void 0 ? _a : this.clientSettings.compression) !== null && _b !== void 0 ? _b : true, + }; + const stream = new TweetStream_1.default(requestData); + if (!enableAutoConnect) { + return stream; + } + return stream.connect(); + } + /* Token helpers */ + initializeToken(token) { + if (typeof token === 'string') { + this.bearerToken = token; + } + else if (typeof token === 'object' && 'appKey' in token) { + this.consumerToken = token.appKey; + this.consumerSecret = token.appSecret; + if (token.accessToken && token.accessSecret) { + this.accessToken = token.accessToken; + this.accessSecret = token.accessSecret; + } + this._oauth = this.buildOAuth(); + } + else if (typeof token === 'object' && 'username' in token) { + const key = encodeURIComponent(token.username) + ':' + encodeURIComponent(token.password); + this.basicToken = Buffer.from(key).toString('base64'); + } + else if (typeof token === 'object' && 'clientId' in token) { + this.clientId = token.clientId; + this.clientSecret = token.clientSecret; + } + } + getActiveTokens() { + if (this.bearerToken) { + return { + type: 'oauth2', + bearerToken: this.bearerToken, + }; + } + else if (this.basicToken) { + return { + type: 'basic', + token: this.basicToken, + }; + } + else if (this.consumerSecret && this._oauth) { + return { + type: 'oauth-1.0a', + appKey: this.consumerToken, + appSecret: this.consumerSecret, + accessToken: this.accessToken, + accessSecret: this.accessSecret, + }; + } + else if (this.clientId) { + return { + type: 'oauth2-user', + clientId: this.clientId, + }; + } + return { type: 'none' }; + } + buildOAuth() { + if (!this.consumerSecret || !this.consumerToken) + throw new Error('Invalid consumer tokens'); + return new oauth1_helper_1.default({ + consumerKeys: { key: this.consumerToken, secret: this.consumerSecret }, + }); + } + getOAuthAccessTokens() { + if (!this.accessSecret || !this.accessToken) + return; + return { + key: this.accessToken, + secret: this.accessSecret, + }; + } + /* Plugin helpers */ + getPlugins() { + var _a; + return (_a = this.clientSettings.plugins) !== null && _a !== void 0 ? _a : []; + } + hasPlugins() { + var _a; + return !!((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length); + } + async applyPluginMethod(method, args) { + var _a; + let returnValue; + for (const plugin of this.getPlugins()) { + const value = await ((_a = plugin[method]) === null || _a === void 0 ? void 0 : _a.call(plugin, args)); + if (value && value instanceof types_1.TwitterApiPluginResponseOverride) { + returnValue = value; + } + } + return returnValue; + } + /* Request helpers */ + writeAuthHeaders({ headers, bodyInSignature, url, method, query, body }) { + headers = { ...headers }; + if (this.bearerToken) { + headers.Authorization = 'Bearer ' + this.bearerToken; + } + else if (this.basicToken) { + // Basic auth, to request a bearer token + headers.Authorization = 'Basic ' + this.basicToken; + } + else if (this.clientId && this.clientSecret) { + // Basic auth with clientId + clientSecret + headers.Authorization = 'Basic ' + oauth2_helper_1.OAuth2Helper.getAuthHeader(this.clientId, this.clientSecret); + } + else if (this.consumerSecret && this._oauth) { + // Merge query and body + const data = bodyInSignature ? request_param_helper_1.default.mergeQueryAndBodyForOAuth(query, body) : query; + const auth = this._oauth.authorize({ + url: url.toString(), + method, + data, + }, this.getOAuthAccessTokens()); + headers = { ...headers, ...this._oauth.toHeader(auth) }; + } + return headers; + } + getUrlObjectFromUrlString(url) { + // Add protocol to URL if needed + if (!url.startsWith('http')) { + url = 'https://' + url; + } + // Convert URL to object that will receive all URL modifications + return new URL(url); + } + getHttpRequestArgs({ url: stringUrl, method, query: rawQuery = {}, body: rawBody = {}, headers, forceBodyMode, enableAuth, params, }) { + let body = undefined; + method = method.toUpperCase(); + headers = headers !== null && headers !== void 0 ? headers : {}; + // Add user agent header (Twitter recommends it) + if (!headers['x-user-agent']) { + headers['x-user-agent'] = 'Node.twitter-api-v2'; + } + const url = this.getUrlObjectFromUrlString(stringUrl); + // URL without query string to save as endpoint name + const rawUrl = url.origin + url.pathname; + // Apply URL parameters + if (params) { + request_param_helper_1.default.applyRequestParametersToUrl(url, params); + } + // Build a URL without anything in QS, and QSP in query + const query = request_param_helper_1.default.formatQueryToString(rawQuery); + request_param_helper_1.default.moveUrlQueryParamsIntoObject(url, query); + // Delete undefined parameters + if (!(rawBody instanceof Buffer)) { + (0, helpers_2.trimUndefinedProperties)(rawBody); + } + // OAuth signature should not include parameters when using multipart. + const bodyType = forceBodyMode !== null && forceBodyMode !== void 0 ? forceBodyMode : request_param_helper_1.default.autoDetectBodyType(url); + // If undefined or true, enable auth by headers + if (enableAuth !== false) { + // OAuth needs body signature only if body is URL encoded. + const bodyInSignature = ClientRequestMaker.BODY_METHODS.has(method) && bodyType === 'url'; + headers = this.writeAuthHeaders({ headers, bodyInSignature, method, query, url, body: rawBody }); + } + if (ClientRequestMaker.BODY_METHODS.has(method)) { + body = request_param_helper_1.default.constructBodyParams(rawBody, headers, bodyType) || undefined; + } + request_param_helper_1.default.addQueryParamsToUrl(url, query); + return { + rawUrl, + url, + method, + headers, + body, + }; + } + /* Plugin helpers */ + async applyPreRequestConfigHooks(requestParams) { + var _a; + const url = this.getUrlObjectFromUrlString(requestParams.url); + for (const plugin of this.getPlugins()) { + const result = await ((_a = plugin.onBeforeRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, { + client: this, + url, + params: requestParams, + })); + if (result) { + return result; + } + } + } + applyPreStreamRequestConfigHooks(requestParams) { + var _a; + const url = this.getUrlObjectFromUrlString(requestParams.url); + for (const plugin of this.getPlugins()) { + (_a = plugin.onBeforeStreamRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, { + client: this, + url, + params: requestParams, + }); + } + } + async applyPreRequestHooks(requestParams, computedParams, requestOptions) { + await this.applyPluginMethod('onBeforeRequest', { + client: this, + url: this.getUrlObjectFromUrlString(requestParams.url), + params: requestParams, + computedParams, + requestOptions, + }); + } + async applyPostRequestHooks(requestParams, computedParams, requestOptions, response) { + return await this.applyPluginMethod('onAfterRequest', { + client: this, + url: this.getUrlObjectFromUrlString(requestParams.url), + params: requestParams, + computedParams, + requestOptions, + response, + }); + } + applyResponseErrorHooks(requestParams, computedParams, requestOptions, promise) { + return promise.catch(helpers_1.applyResponseHooks.bind(this, requestParams, computedParams, requestOptions)); + } +} +exports.ClientRequestMaker = ClientRequestMaker; +ClientRequestMaker.BODY_METHODS = new Set(['POST', 'PUT', 'PATCH']); + + +/***/ }), + +/***/ 7954: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RequestParamHelpers = void 0; +const form_data_helper_1 = __nccwpck_require__(8274); +const oauth1_helper_1 = __importDefault(__nccwpck_require__(8291)); +/* Helpers functions that are specific to this class but do not depends on instance */ +class RequestParamHelpers { + static formatQueryToString(query) { + const formattedQuery = {}; + for (const prop in query) { + if (typeof query[prop] === 'string') { + formattedQuery[prop] = query[prop]; + } + else if (typeof query[prop] !== 'undefined') { + formattedQuery[prop] = String(query[prop]); + } + } + return formattedQuery; + } + static autoDetectBodyType(url) { + if (url.pathname.startsWith('/2/') || url.pathname.startsWith('/labs/2/')) { + // oauth2 takes url encoded + if (url.password.startsWith('/2/oauth2')) { + return 'url'; + } + // Twitter API v2 has JSON-encoded requests for everything else + return 'json'; + } + if (url.hostname === 'upload.twitter.com') { + if (url.pathname === '/1.1/media/upload.json') { + return 'form-data'; + } + // json except for media/upload command, that is form-data. + return 'json'; + } + const endpoint = url.pathname.split('/1.1/', 2)[1]; + if (this.JSON_1_1_ENDPOINTS.has(endpoint)) { + return 'json'; + } + return 'url'; + } + static addQueryParamsToUrl(url, query) { + const queryEntries = Object.entries(query); + if (queryEntries.length) { + let search = ''; + for (const [key, value] of queryEntries) { + search += (search.length ? '&' : '?') + `${oauth1_helper_1.default.percentEncode(key)}=${oauth1_helper_1.default.percentEncode(value)}`; + } + url.search = search; + } + } + static constructBodyParams(body, headers, mode) { + if (body instanceof Buffer) { + return body; + } + if (mode === 'json') { + headers['content-type'] = 'application/json;charset=UTF-8'; + return JSON.stringify(body); + } + else if (mode === 'url') { + headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; + if (Object.keys(body).length) { + return new URLSearchParams(body) + .toString() + .replace(/\*/g, '%2A'); // URLSearchParams doesnt encode '*', but Twitter wants it encoded. + } + return ''; + } + else if (mode === 'raw') { + throw new Error('You can only use raw body mode with Buffers. To give a string, use Buffer.from(str).'); + } + else { + const form = new form_data_helper_1.FormDataHelper(); + for (const parameter in body) { + form.append(parameter, body[parameter]); + } + const formHeaders = form.getHeaders(); + headers['content-type'] = formHeaders['content-type']; + return form.getBuffer(); + } + } + static setBodyLengthHeader(options, body) { + var _a; + options.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : {}; + if (typeof body === 'string') { + options.headers['content-length'] = Buffer.byteLength(body); + } + else { + options.headers['content-length'] = body.length; + } + } + static isOAuthSerializable(item) { + return !(item instanceof Buffer); + } + static mergeQueryAndBodyForOAuth(query, body) { + const parameters = {}; + for (const prop in query) { + parameters[prop] = query[prop]; + } + if (this.isOAuthSerializable(body)) { + for (const prop in body) { + const bodyProp = body[prop]; + if (this.isOAuthSerializable(bodyProp)) { + parameters[prop] = typeof bodyProp === 'object' && bodyProp !== null && 'toString' in bodyProp + ? bodyProp.toString() + : bodyProp; + } + } + } + return parameters; + } + static moveUrlQueryParamsIntoObject(url, query) { + for (const [param, value] of url.searchParams) { + query[param] = value; + } + // Remove the query string + url.search = ''; + return url; + } + /** + * Replace URL parameters available in pathname, like `:id`, with data given in `parameters`: + * `https://twitter.com/:id.json` + `{ id: '20' }` => `https://twitter.com/20.json` + */ + static applyRequestParametersToUrl(url, parameters) { + url.pathname = url.pathname.replace(/:([A-Z_-]+)/ig, (fullMatch, paramName) => { + if (parameters[paramName] !== undefined) { + return String(parameters[paramName]); + } + return fullMatch; + }); + return url; + } +} +exports.RequestParamHelpers = RequestParamHelpers; +RequestParamHelpers.JSON_1_1_ENDPOINTS = new Set([ + 'direct_messages/events/new.json', + 'direct_messages/welcome_messages/new.json', + 'direct_messages/welcome_messages/rules/new.json', + 'media/metadata/create.json', + 'collections/entries/curate.json', +]); +exports["default"] = RequestParamHelpers; + + +/***/ }), + +/***/ 8726: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const request_maker_mixin_1 = __nccwpck_require__(6131); +const helpers_1 = __nccwpck_require__(1120); +const globals_1 = __nccwpck_require__(3444); +/** + * Base class for Twitter instances + */ +class TwitterApiBase { + constructor(token, settings = {}) { + this._currentUser = null; + this._currentUserV2 = null; + if (token instanceof TwitterApiBase) { + this._requestMaker = token._requestMaker; + } + else { + this._requestMaker = new request_maker_mixin_1.ClientRequestMaker(settings); + this._requestMaker.initializeToken(token); + } + } + /* Prefix/Token handling */ + setPrefix(prefix) { + this._prefix = prefix; + } + cloneWithPrefix(prefix) { + const clone = this.constructor(this); + clone.setPrefix(prefix); + return clone; + } + getActiveTokens() { + return this._requestMaker.getActiveTokens(); + } + /* Rate limit cache / Plugins */ + getPlugins() { + return this._requestMaker.getPlugins(); + } + getPluginOfType(type) { + return this.getPlugins().find(plugin => plugin instanceof type); + } + /** + * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` + * + * Tells if you hit the Twitter rate limit for {endpoint}. + * (local data only, this should not ask anything to Twitter) + */ + hasHitRateLimit(endpoint) { + var _a; + if (this.isRateLimitStatusObsolete(endpoint)) { + return false; + } + return ((_a = this.getLastRateLimitStatus(endpoint)) === null || _a === void 0 ? void 0 : _a.remaining) === 0; + } + /** + * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` + * + * Tells if you hit the returned Twitter rate limit for {endpoint} has expired. + * If client has no saved rate limit data for {endpoint}, this will gives you `true`. + */ + isRateLimitStatusObsolete(endpoint) { + const rateLimit = this.getLastRateLimitStatus(endpoint); + if (rateLimit === undefined) { + return true; + } + // Timestamps are exprimed in seconds, JS works with ms + return (rateLimit.reset * 1000) < Date.now(); + } + /** + * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` + * + * Get the last obtained Twitter rate limit information for {endpoint}. + * (local data only, this should not ask anything to Twitter) + */ + getLastRateLimitStatus(endpoint) { + const endpointWithPrefix = endpoint.match(/^https?:\/\//) ? endpoint : (this._prefix + endpoint); + return this._requestMaker.getRateLimits()[endpointWithPrefix]; + } + /* Current user cache */ + /** Get cached current user. */ + getCurrentUserObject(forceFetch = false) { + if (!forceFetch && this._currentUser) { + if (this._currentUser.value) { + return Promise.resolve(this._currentUser.value); + } + return this._currentUser.promise; + } + this._currentUser = (0, helpers_1.sharedPromise)(() => this.get('account/verify_credentials.json', { tweet_mode: 'extended' }, { prefix: globals_1.API_V1_1_PREFIX })); + return this._currentUser.promise; + } + /** + * Get cached current user from v2 API. + * This can only be the slimest available `UserV2` object, with only `id`, `name` and `username` properties defined. + * + * To get a customized `UserV2Result`, use `.v2.me()` + * + * OAuth2 scopes: `tweet.read` & `users.read` + */ + getCurrentUserV2Object(forceFetch = false) { + if (!forceFetch && this._currentUserV2) { + if (this._currentUserV2.value) { + return Promise.resolve(this._currentUserV2.value); + } + return this._currentUserV2.promise; + } + this._currentUserV2 = (0, helpers_1.sharedPromise)(() => this.get('users/me', undefined, { prefix: globals_1.API_V2_PREFIX })); + return this._currentUserV2.promise; + } + async get(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) { + if (prefix) + url = prefix + url; + const resp = await this._requestMaker.send({ + url, + method: 'GET', + query, + ...rest, + }); + return fullResponse ? resp : resp.data; + } + async delete(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) { + if (prefix) + url = prefix + url; + const resp = await this._requestMaker.send({ + url, + method: 'DELETE', + query, + ...rest, + }); + return fullResponse ? resp : resp.data; + } + async post(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { + if (prefix) + url = prefix + url; + const resp = await this._requestMaker.send({ + url, + method: 'POST', + body, + ...rest, + }); + return fullResponse ? resp : resp.data; + } + async put(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { + if (prefix) + url = prefix + url; + const resp = await this._requestMaker.send({ + url, + method: 'PUT', + body, + ...rest, + }); + return fullResponse ? resp : resp.data; + } + async patch(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { + if (prefix) + url = prefix + url; + const resp = await this._requestMaker.send({ + url, + method: 'PATCH', + body, + ...rest, + }); + return fullResponse ? resp : resp.data; + } + getStream(url, query, { prefix = this._prefix, ...rest } = {}) { + return this._requestMaker.sendStream({ + url: prefix ? prefix + url : url, + method: 'GET', + query, + ...rest, + }); + } + postStream(url, body, { prefix = this._prefix, ...rest } = {}) { + return this._requestMaker.sendStream({ + url: prefix ? prefix + url : url, + method: 'POST', + body, + ...rest, + }); + } +} +exports["default"] = TwitterApiBase; + + +/***/ }), + +/***/ 3810: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const client_base_1 = __importDefault(__nccwpck_require__(8726)); +/** + * Base subclient for every v1 and v2 client. + */ +class TwitterApiSubClient extends client_base_1.default { + constructor(instance) { + if (!(instance instanceof client_base_1.default)) { + throw new Error('You must instance SubTwitterApi instance from existing TwitterApi instance.'); + } + super(instance); + } +} +exports["default"] = TwitterApiSubClient; + + +/***/ }), + +/***/ 6118: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiReadOnly = exports.TwitterApiReadWrite = exports.TwitterApi = void 0; +const client_v1_1 = __importDefault(__nccwpck_require__(7030)); +const client_v2_1 = __importDefault(__nccwpck_require__(4692)); +const readwrite_1 = __importDefault(__nccwpck_require__(489)); +// "Real" exported client for usage of TwitterApi. +/** + * Twitter v1.1 and v2 API client. + */ +class TwitterApi extends readwrite_1.default { + /* Direct access to subclients */ + get v1() { + if (this._v1) + return this._v1; + return this._v1 = new client_v1_1.default(this); + } + get v2() { + if (this._v2) + return this._v2; + return this._v2 = new client_v2_1.default(this); + } + /** + * Get a client with read/write rights. + */ + get readWrite() { + return this; + } + /* Static helpers */ + static getErrors(error) { + var _a; + if (typeof error !== 'object') + return []; + if (!('data' in error)) + return []; + return (_a = error.data.errors) !== null && _a !== void 0 ? _a : []; + } + /** Extract another image size than obtained in a `profile_image_url` or `profile_image_url_https` field of a user object. */ + static getProfileImageInSize(profileImageUrl, size) { + const lastPart = profileImageUrl.split('/').pop(); + const sizes = ['normal', 'bigger', 'mini']; + let originalUrl = profileImageUrl; + for (const availableSize of sizes) { + if (lastPart.includes(`_${availableSize}`)) { + originalUrl = profileImageUrl.replace(`_${availableSize}`, ''); + break; + } + } + if (size === 'original') { + return originalUrl; + } + const extPos = originalUrl.lastIndexOf('.'); + if (extPos !== -1) { + const ext = originalUrl.slice(extPos + 1); + return originalUrl.slice(0, extPos) + '_' + size + '.' + ext; + } + else { + return originalUrl + '_' + size; + } + } +} +exports.TwitterApi = TwitterApi; +var readwrite_2 = __nccwpck_require__(489); +Object.defineProperty(exports, "TwitterApiReadWrite", ({ enumerable: true, get: function () { return __importDefault(readwrite_2).default; } })); +var readonly_1 = __nccwpck_require__(7344); +Object.defineProperty(exports, "TwitterApiReadOnly", ({ enumerable: true, get: function () { return __importDefault(readonly_1).default; } })); +exports["default"] = TwitterApi; + + +/***/ }), + +/***/ 7344: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const _1 = __importDefault(__nccwpck_require__(6118)); +const client_base_1 = __importDefault(__nccwpck_require__(8726)); +const client_v1_read_1 = __importDefault(__nccwpck_require__(4273)); +const client_v2_read_1 = __importDefault(__nccwpck_require__(7318)); +const oauth2_helper_1 = __nccwpck_require__(9791); +const request_param_helper_1 = __importDefault(__nccwpck_require__(7954)); +/** + * Twitter v1.1 and v2 API client. + */ +class TwitterApiReadOnly extends client_base_1.default { + /* Direct access to subclients */ + get v1() { + if (this._v1) + return this._v1; + return this._v1 = new client_v1_read_1.default(this); + } + get v2() { + if (this._v2) + return this._v2; + return this._v2 = new client_v2_read_1.default(this); + } + /** + * Fetch and cache current user. + * This method can only be called with a OAuth 1.0a user authentication. + * + * You can use this method to test if authentication was successful. + * Next calls to this methods will use the cached user, unless `forceFetch: true` is given. + */ + async currentUser(forceFetch = false) { + return await this.getCurrentUserObject(forceFetch); + } + /** + * Fetch and cache current user. + * This method can only be called with a OAuth 1.0a or OAuth2 user authentication. + * + * This can only be the slimest available `UserV2` object, with only id, name and username properties defined. + * To get a customized `UserV2Result`, use `.v2.me()` + * + * You can use this method to test if authentication was successful. + * Next calls to this methods will use the cached user, unless `forceFetch: true` is given. + * + * OAuth2 scopes: `tweet.read` & `users.read` + */ + async currentUserV2(forceFetch = false) { + return await this.getCurrentUserV2Object(forceFetch); + } + /* Shortcuts to endpoints */ + search(what, options) { + return this.v2.search(what, options); + } + /* Authentication */ + /** + * Generate the OAuth request token link for user-based OAuth 1.0 auth. + * + * ```ts + * // Instanciate TwitterApi with consumer keys + * const client = new TwitterApi({ appKey: 'consumer_key', appSecret: 'consumer_secret' }); + * + * const tokenRequest = await client.generateAuthLink('oob-or-your-callback-url'); + * // redirect end-user to tokenRequest.url + * + * // Save tokenRequest.oauth_token_secret somewhere, it will be needed for next auth step. + * ``` + */ + async generateAuthLink(oauth_callback = 'oob', { authAccessType, linkMode = 'authenticate', forceLogin, screenName, } = {}) { + const oauthResult = await this.post('https://api.twitter.com/oauth/request_token', { oauth_callback, x_auth_access_type: authAccessType }); + let url = `https://api.twitter.com/oauth/${linkMode}?oauth_token=${encodeURIComponent(oauthResult.oauth_token)}`; + if (forceLogin !== undefined) { + url += `&force_login=${encodeURIComponent(forceLogin)}`; + } + if (screenName !== undefined) { + url += `&screen_name=${encodeURIComponent(screenName)}`; + } + if (this._requestMaker.hasPlugins()) { + this._requestMaker.applyPluginMethod('onOAuth1RequestToken', { + client: this._requestMaker, + url, + oauthResult, + }); + } + return { + url, + ...oauthResult, + }; + } + /** + * Obtain access to user-based OAuth 1.0 auth. + * + * After user is redirect from your callback, use obtained oauth_token and oauth_verifier to + * instanciate the new TwitterApi instance. + * + * ```ts + * // Use the saved oauth_token_secret associated to oauth_token returned by callback + * const requestClient = new TwitterApi({ + * appKey: 'consumer_key', + * appSecret: 'consumer_secret', + * accessToken: 'oauth_token', + * accessSecret: 'oauth_token_secret' + * }); + * + * // Use oauth_verifier obtained from callback request + * const { client: userClient } = await requestClient.login('oauth_verifier'); + * + * // {userClient} is a valid {TwitterApi} object you can use for future requests + * ``` + */ + async login(oauth_verifier) { + const tokens = this.getActiveTokens(); + if (tokens.type !== 'oauth-1.0a') + throw new Error('You must setup TwitterApi instance with consumer keys to accept OAuth 1.0 login'); + const oauth_result = await this.post('https://api.twitter.com/oauth/access_token', { oauth_token: tokens.accessToken, oauth_verifier }); + const client = new _1.default({ + appKey: tokens.appKey, + appSecret: tokens.appSecret, + accessToken: oauth_result.oauth_token, + accessSecret: oauth_result.oauth_token_secret, + }, this._requestMaker.clientSettings); + return { + accessToken: oauth_result.oauth_token, + accessSecret: oauth_result.oauth_token_secret, + userId: oauth_result.user_id, + screenName: oauth_result.screen_name, + client, + }; + } + /** + * Enable application-only authentication. + * + * To make the request, instanciate TwitterApi with consumer and secret. + * + * ```ts + * const requestClient = new TwitterApi({ appKey: 'consumer', appSecret: 'secret' }); + * const appClient = await requestClient.appLogin(); + * + * // Use {appClient} to make requests + * ``` + */ + async appLogin() { + const tokens = this.getActiveTokens(); + if (tokens.type !== 'oauth-1.0a') + throw new Error('You must setup TwitterApi instance with consumer keys to accept app-only login'); + // Create a client with Basic authentication + const basicClient = new _1.default({ username: tokens.appKey, password: tokens.appSecret }); + const res = await basicClient.post('https://api.twitter.com/oauth2/token', { grant_type: 'client_credentials' }); + // New object with Bearer token + return new _1.default(res.access_token, this._requestMaker.clientSettings); + } + /* OAuth 2 user authentication */ + /** + * Generate the OAuth request token link for user-based OAuth 2.0 auth. + * + * - **You can only use v2 API endpoints with this authentication method.** + * - **You need to specify which scope you want to have when you create your auth link. Make sure it matches your needs.** + * + * See https://developer.twitter.com/en/docs/authentication/oauth-2-0/user-access-token for details. + * + * ```ts + * // Instanciate TwitterApi with client ID + * const client = new TwitterApi({ clientId: 'yourClientId' }); + * + * // Generate a link to callback URL that will gives a token with tweet+user read access + * const link = client.generateOAuth2AuthLink('your-callback-url', { scope: ['tweet.read', 'users.read'] }); + * + * // Extract props from generate link + * const { url, state, codeVerifier } = link; + * + * // redirect end-user to url + * // Save `state` and `codeVerifier` somewhere, it will be needed for next auth step. + * ``` + */ + generateOAuth2AuthLink(redirectUri, options = {}) { + var _a, _b; + if (!this._requestMaker.clientId) { + throw new Error('Twitter API instance is not initialized with client ID. You can find your client ID in Twitter Developer Portal. ' + + 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); + } + const state = (_a = options.state) !== null && _a !== void 0 ? _a : oauth2_helper_1.OAuth2Helper.generateRandomString(32); + const codeVerifier = oauth2_helper_1.OAuth2Helper.getCodeVerifier(); + const codeChallenge = oauth2_helper_1.OAuth2Helper.getCodeChallengeFromVerifier(codeVerifier); + const rawScope = (_b = options.scope) !== null && _b !== void 0 ? _b : ''; + const scope = Array.isArray(rawScope) ? rawScope.join(' ') : rawScope; + const url = new URL('https://twitter.com/i/oauth2/authorize'); + const query = { + response_type: 'code', + client_id: this._requestMaker.clientId, + redirect_uri: redirectUri, + state, + code_challenge: codeChallenge, + code_challenge_method: 's256', + scope, + }; + request_param_helper_1.default.addQueryParamsToUrl(url, query); + const result = { + url: url.toString(), + state, + codeVerifier, + codeChallenge, + }; + if (this._requestMaker.hasPlugins()) { + this._requestMaker.applyPluginMethod('onOAuth2RequestToken', { + client: this._requestMaker, + result, + redirectUri, + }); + } + return result; + } + /** + * Obtain access to user-based OAuth 2.0 auth. + * + * After user is redirect from your callback, use obtained code to + * instanciate the new TwitterApi instance. + * + * You need to obtain `codeVerifier` from a call to `.generateOAuth2AuthLink`. + * + * ```ts + * // Use the saved codeVerifier associated to state (present in query string of callback) + * const requestClient = new TwitterApi({ clientId: 'yourClientId' }); + * + * const { client: userClient, refreshToken } = await requestClient.loginWithOAuth2({ + * code: 'codeFromQueryString', + * // the same URL given to generateOAuth2AuthLink + * redirectUri, + * // the verifier returned by generateOAuth2AuthLink + * codeVerifier, + * }); + * + * // {userClient} is a valid {TwitterApi} object you can use for future requests + * // {refreshToken} is defined if 'offline.access' is in scope. + * ``` + */ + async loginWithOAuth2({ code, codeVerifier, redirectUri }) { + if (!this._requestMaker.clientId) { + throw new Error('Twitter API instance is not initialized with client ID. ' + + 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); + } + const accessTokenResult = await this.post('https://api.twitter.com/2/oauth2/token', { + code, + code_verifier: codeVerifier, + redirect_uri: redirectUri, + grant_type: 'authorization_code', + client_id: this._requestMaker.clientId, + client_secret: this._requestMaker.clientSecret, + }); + return this.parseOAuth2AccessTokenResult(accessTokenResult); + } + /** + * Obtain a new access token to user-based OAuth 2.0 auth from a refresh token. + * + * ```ts + * const requestClient = new TwitterApi({ clientId: 'yourClientId' }); + * + * const { client: userClient } = await requestClient.refreshOAuth2Token('refreshToken'); + * // {userClient} is a valid {TwitterApi} object you can use for future requests + * ``` + */ + async refreshOAuth2Token(refreshToken) { + if (!this._requestMaker.clientId) { + throw new Error('Twitter API instance is not initialized with client ID. ' + + 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); + } + const accessTokenResult = await this.post('https://api.twitter.com/2/oauth2/token', { + refresh_token: refreshToken, + grant_type: 'refresh_token', + client_id: this._requestMaker.clientId, + client_secret: this._requestMaker.clientSecret, + }); + return this.parseOAuth2AccessTokenResult(accessTokenResult); + } + /** + * Revoke a single user-based OAuth 2.0 token. + * + * You must specify its source, access token (directly after login) + * or refresh token (if you've called `.refreshOAuth2Token` before). + */ + async revokeOAuth2Token(token, tokenType = 'access_token') { + if (!this._requestMaker.clientId) { + throw new Error('Twitter API instance is not initialized with client ID. ' + + 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); + } + return await this.post('https://api.twitter.com/2/oauth2/revoke', { + client_id: this._requestMaker.clientId, + client_secret: this._requestMaker.clientSecret, + token, + token_type_hint: tokenType, + }); + } + parseOAuth2AccessTokenResult(result) { + const client = new _1.default(result.access_token, this._requestMaker.clientSettings); + const scope = result.scope.split(' ').filter(e => e); + return { + client, + expiresIn: result.expires_in, + accessToken: result.access_token, + scope, + refreshToken: result.refresh_token, + }; + } +} +exports["default"] = TwitterApiReadOnly; + + +/***/ }), + +/***/ 489: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const client_v1_write_1 = __importDefault(__nccwpck_require__(6685)); +const client_v2_write_1 = __importDefault(__nccwpck_require__(5587)); +const readonly_1 = __importDefault(__nccwpck_require__(7344)); +/** + * Twitter v1.1 and v2 API client. + */ +class TwitterApiReadWrite extends readonly_1.default { + /* Direct access to subclients */ + get v1() { + if (this._v1) + return this._v1; + return this._v1 = new client_v1_write_1.default(this); + } + get v2() { + if (this._v2) + return this._v2; + return this._v2 = new client_v2_write_1.default(this); + } + /** + * Get a client with read only rights. + */ + get readOnly() { + return this; + } +} +exports["default"] = TwitterApiReadWrite; + + +/***/ }), + +/***/ 3444: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.API_V1_1_STREAM_PREFIX = exports.API_V1_1_UPLOAD_PREFIX = exports.API_V1_1_PREFIX = exports.API_V2_LABS_PREFIX = exports.API_V2_PREFIX = void 0; +exports.API_V2_PREFIX = 'https://api.twitter.com/2/'; +exports.API_V2_LABS_PREFIX = 'https://api.twitter.com/labs/2/'; +exports.API_V1_1_PREFIX = 'https://api.twitter.com/1.1/'; +exports.API_V1_1_UPLOAD_PREFIX = 'https://upload.twitter.com/1.1/'; +exports.API_V1_1_STREAM_PREFIX = 'https://stream.twitter.com/1.1/'; + + +/***/ }), + +/***/ 1120: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.safeDeprecationWarning = exports.hasMultipleItems = exports.isTweetStreamV2ErrorPayload = exports.trimUndefinedProperties = exports.arrayWrap = exports.sharedPromise = void 0; +const settings_1 = __nccwpck_require__(6273); +function sharedPromise(getter) { + const sharedPromise = { + value: undefined, + promise: getter().then(val => { + sharedPromise.value = val; + return val; + }), + }; + return sharedPromise; +} +exports.sharedPromise = sharedPromise; +function arrayWrap(value) { + if (Array.isArray(value)) { + return value; + } + return [value]; +} +exports.arrayWrap = arrayWrap; +function trimUndefinedProperties(object) { + // Delete undefined parameters + for (const parameter in object) { + if (object[parameter] === undefined) + delete object[parameter]; + } +} +exports.trimUndefinedProperties = trimUndefinedProperties; +function isTweetStreamV2ErrorPayload(payload) { + // Is error only if 'errors' is present and 'data' does not exists + return typeof payload === 'object' + && 'errors' in payload + && !('data' in payload); +} +exports.isTweetStreamV2ErrorPayload = isTweetStreamV2ErrorPayload; +function hasMultipleItems(item) { + if (Array.isArray(item) && item.length > 1) { + return true; + } + return item.toString().includes(','); +} +exports.hasMultipleItems = hasMultipleItems; +const deprecationWarningsCache = new Set(); +function safeDeprecationWarning(message) { + if (typeof console === 'undefined' || !console.warn || !settings_1.TwitterApiV2Settings.deprecationWarnings) { + return; + } + const hash = `${message.instance}-${message.method}-${message.problem}`; + if (deprecationWarningsCache.has(hash)) { + return; + } + const formattedMsg = `[twitter-api-v2] Deprecation warning: In ${message.instance}.${message.method}() call` + + `, ${message.problem}.\n${message.resolution}.`; + console.warn(formattedMsg); + console.warn('To disable this message, import variable TwitterApiV2Settings from twitter-api-v2 and set TwitterApiV2Settings.deprecationWarnings to false.'); + deprecationWarningsCache.add(hash); +} +exports.safeDeprecationWarning = safeDeprecationWarning; + + +/***/ }), + +/***/ 9360: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports["default"] = void 0; +var client_1 = __nccwpck_require__(6118); +Object.defineProperty(exports, "default", ({ enumerable: true, get: function () { return __importDefault(client_1).default; } })); +__exportStar(__nccwpck_require__(6118), exports); +__exportStar(__nccwpck_require__(7030), exports); +__exportStar(__nccwpck_require__(4692), exports); +__exportStar(__nccwpck_require__(876), exports); +__exportStar(__nccwpck_require__(1204), exports); +__exportStar(__nccwpck_require__(1638), exports); +__exportStar(__nccwpck_require__(5814), exports); +__exportStar(__nccwpck_require__(9362), exports); +__exportStar(__nccwpck_require__(6273), exports); + + +/***/ }), + +/***/ 5317: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PreviousableTwitterPaginator = exports.TwitterPaginator = void 0; +/** TwitterPaginator: able to get consume data from initial request, then fetch next data sequentially. */ +class TwitterPaginator { + // noinspection TypeScriptAbstractClassConstructorCanBeMadeProtected + constructor({ realData, rateLimit, instance, queryParams, sharedParams }) { + this._maxResultsWhenFetchLast = 100; + this._realData = realData; + this._rateLimit = rateLimit; + this._instance = instance; + this._queryParams = queryParams; + this._sharedParams = sharedParams; + } + get _isRateLimitOk() { + if (!this._rateLimit) { + return true; + } + const resetDate = this._rateLimit.reset * 1000; + if (resetDate < Date.now()) { + return true; + } + return this._rateLimit.remaining > 0; + } + makeRequest(queryParams) { + return this._instance.get(this.getEndpoint(), queryParams, { fullResponse: true, params: this._sharedParams }); + } + makeNewInstanceFromResult(result, queryParams) { + // Construct a subclass + return new this.constructor({ + realData: result.data, + rateLimit: result.rateLimit, + instance: this._instance, + queryParams, + sharedParams: this._sharedParams, + }); + } + getEndpoint() { + return this._endpoint; + } + injectQueryParams(maxResults) { + return { + ...(maxResults ? { max_results: maxResults } : {}), + ...this._queryParams, + }; + } + /* ---------------------- */ + /* Real paginator methods */ + /* ---------------------- */ + /** + * Next page. + */ + async next(maxResults) { + const queryParams = this.getNextQueryParams(maxResults); + const result = await this.makeRequest(queryParams); + return this.makeNewInstanceFromResult(result, queryParams); + } + /** + * Next page, but store it in current instance. + */ + async fetchNext(maxResults) { + const queryParams = this.getNextQueryParams(maxResults); + const result = await this.makeRequest(queryParams); + // Await in case of async sub-methods + await this.refreshInstanceFromResult(result, true); + return this; + } + /** + * Fetch up to {count} items after current page, + * as long as rate limit is not hit and Twitter has some results + */ + async fetchLast(count = Infinity) { + let queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast); + let resultCount = 0; + // Break at rate limit limit + while (resultCount < count && this._isRateLimitOk) { + const response = await this.makeRequest(queryParams); + await this.refreshInstanceFromResult(response, true); + resultCount += this.getPageLengthFromRequest(response); + if (this.isFetchLastOver(response)) { + break; + } + queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast); + } + return this; + } + get rateLimit() { + var _a; + return { ...(_a = this._rateLimit) !== null && _a !== void 0 ? _a : {} }; + } + /** Get raw data returned by Twitter API. */ + get data() { + return this._realData; + } + get done() { + return !this.canFetchNextPage(this._realData); + } + /** + * Iterate over currently fetched items. + */ + *[Symbol.iterator]() { + yield* this.getItemArray(); + } + /** + * Iterate over items "undefinitely" (until rate limit is hit / they're no more items available) + * This will **mutate the current instance** and fill data, metas, etc. inside this instance. + * + * If you need to handle concurrent requests, or you need to rely on immutability, please use `.fetchAndIterate()` instead. + */ + async *[Symbol.asyncIterator]() { + yield* this.getItemArray(); + // eslint-disable-next-line @typescript-eslint/no-this-alias + let paginator = this; + let canFetchNextPage = this.canFetchNextPage(this._realData); + while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) { + const next = await paginator.next(this._maxResultsWhenFetchLast); + // Store data into current instance [needed to access includes and meta] + this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true); + canFetchNextPage = this.canFetchNextPage(next._realData); + const items = next.getItemArray(); + yield* items; + paginator = next; + } + } + /** + * Iterate over items "undefinitely" without modifying the current instance (until rate limit is hit / they're no more items available) + * + * This will **NOT** mutate the current instance, meaning that current instance will not inherit from `includes` and `meta` (v2 API only). + * Use `Symbol.asyncIterator` (`for-await of`) to directly access items with current instance mutation. + */ + async *fetchAndIterate() { + for (const item of this.getItemArray()) { + yield [item, this]; + } + // eslint-disable-next-line @typescript-eslint/no-this-alias + let paginator = this; + let canFetchNextPage = this.canFetchNextPage(this._realData); + while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) { + const next = await paginator.next(this._maxResultsWhenFetchLast); + // Store data into current instance [needed to access includes and meta] + this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true); + canFetchNextPage = this.canFetchNextPage(next._realData); + for (const item of next.getItemArray()) { + yield [item, next]; + } + this._rateLimit = next._rateLimit; + paginator = next; + } + } +} +exports.TwitterPaginator = TwitterPaginator; +/** PreviousableTwitterPaginator: a TwitterPaginator able to get consume data from both side, next and previous. */ +class PreviousableTwitterPaginator extends TwitterPaginator { + /** + * Previous page (new tweets) + */ + async previous(maxResults) { + const queryParams = this.getPreviousQueryParams(maxResults); + const result = await this.makeRequest(queryParams); + return this.makeNewInstanceFromResult(result, queryParams); + } + /** + * Previous page, but in current instance. + */ + async fetchPrevious(maxResults) { + const queryParams = this.getPreviousQueryParams(maxResults); + const result = await this.makeRequest(queryParams); + await this.refreshInstanceFromResult(result, false); + return this; + } +} +exports.PreviousableTwitterPaginator = PreviousableTwitterPaginator; +exports["default"] = TwitterPaginator; + + +/***/ }), + +/***/ 823: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.WelcomeDmV1Paginator = exports.DmEventsV1Paginator = void 0; +const paginator_v1_1 = __nccwpck_require__(593); +class DmEventsV1Paginator extends paginator_v1_1.CursoredV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'direct_messages/events/list.json'; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.events.push(...result.events); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.events.length; + } + getItemArray() { + return this.events; + } + /** + * Events returned by paginator. + */ + get events() { + return this._realData.events; + } +} +exports.DmEventsV1Paginator = DmEventsV1Paginator; +class WelcomeDmV1Paginator extends paginator_v1_1.CursoredV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'direct_messages/welcome_messages/list.json'; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.welcome_messages.push(...result.welcome_messages); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.welcome_messages.length; + } + getItemArray() { + return this.welcomeMessages; + } + get welcomeMessages() { + return this._realData.welcome_messages; + } +} +exports.WelcomeDmV1Paginator = WelcomeDmV1Paginator; + + +/***/ }), + +/***/ 5814: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(6301), exports); +__exportStar(__nccwpck_require__(5317), exports); +__exportStar(__nccwpck_require__(823), exports); +__exportStar(__nccwpck_require__(7277), exports); +__exportStar(__nccwpck_require__(9848), exports); +__exportStar(__nccwpck_require__(8985), exports); +__exportStar(__nccwpck_require__(2178), exports); +__exportStar(__nccwpck_require__(5631), exports); +__exportStar(__nccwpck_require__(7874), exports); + + +/***/ }), + +/***/ 5631: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ListSubscribersV1Paginator = exports.ListMembersV1Paginator = exports.ListSubscriptionsV1Paginator = exports.ListOwnershipsV1Paginator = exports.ListMembershipsV1Paginator = void 0; +const paginator_v1_1 = __nccwpck_require__(593); +class ListListsV1Paginator extends paginator_v1_1.CursoredV1Paginator { + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.lists.push(...result.lists); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.lists.length; + } + getItemArray() { + return this.lists; + } + /** + * Lists returned by paginator. + */ + get lists() { + return this._realData.lists; + } +} +class ListMembershipsV1Paginator extends ListListsV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/memberships.json'; + } +} +exports.ListMembershipsV1Paginator = ListMembershipsV1Paginator; +class ListOwnershipsV1Paginator extends ListListsV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/ownerships.json'; + } +} +exports.ListOwnershipsV1Paginator = ListOwnershipsV1Paginator; +class ListSubscriptionsV1Paginator extends ListListsV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/subscriptions.json'; + } +} +exports.ListSubscriptionsV1Paginator = ListSubscriptionsV1Paginator; +class ListUsersV1Paginator extends paginator_v1_1.CursoredV1Paginator { + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.users.push(...result.users); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.users.length; + } + getItemArray() { + return this.users; + } + /** + * Users returned by paginator. + */ + get users() { + return this._realData.users; + } +} +class ListMembersV1Paginator extends ListUsersV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/members.json'; + } +} +exports.ListMembersV1Paginator = ListMembersV1Paginator; +class ListSubscribersV1Paginator extends ListUsersV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/subscribers.json'; + } +} +exports.ListSubscribersV1Paginator = ListSubscribersV1Paginator; + + +/***/ }), + +/***/ 7874: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserListFollowedV2Paginator = exports.UserListMembershipsV2Paginator = exports.UserOwnedListsV2Paginator = void 0; +const v2_paginator_1 = __nccwpck_require__(8108); +class ListTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { + getItemArray() { + return this.lists; + } + /** + * Lists returned by paginator. + */ + get lists() { + var _a; + return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + } + get meta() { + return super.meta; + } +} +class UserOwnedListsV2Paginator extends ListTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/owned_lists'; + } +} +exports.UserOwnedListsV2Paginator = UserOwnedListsV2Paginator; +class UserListMembershipsV2Paginator extends ListTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/list_memberships'; + } +} +exports.UserListMembershipsV2Paginator = UserListMembershipsV2Paginator; +class UserListFollowedV2Paginator extends ListTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/followed_lists'; + } +} +exports.UserListFollowedV2Paginator = UserListFollowedV2Paginator; + + +/***/ }), + +/***/ 7277: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MuteUserIdsV1Paginator = exports.MuteUserListV1Paginator = void 0; +const paginator_v1_1 = __nccwpck_require__(593); +class MuteUserListV1Paginator extends paginator_v1_1.CursoredV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'mutes/users/list.json'; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.users.push(...result.users); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.users.length; + } + getItemArray() { + return this.users; + } + /** + * Users returned by paginator. + */ + get users() { + return this._realData.users; + } +} +exports.MuteUserListV1Paginator = MuteUserListV1Paginator; +class MuteUserIdsV1Paginator extends paginator_v1_1.CursoredV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'mutes/users/ids.json'; + this._maxResultsWhenFetchLast = 5000; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.ids.push(...result.ids); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.ids.length; + } + getItemArray() { + return this.ids; + } + /** + * Users IDs returned by paginator. + */ + get ids() { + return this._realData.ids; + } +} +exports.MuteUserIdsV1Paginator = MuteUserIdsV1Paginator; + + +/***/ }), + +/***/ 593: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CursoredV1Paginator = void 0; +const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); +class CursoredV1Paginator extends TwitterPaginator_1.default { + getNextQueryParams(maxResults) { + var _a; + return { + ...this._queryParams, + cursor: (_a = this._realData.next_cursor_str) !== null && _a !== void 0 ? _a : this._realData.next_cursor, + ...(maxResults ? { count: maxResults } : {}), + }; + } + isFetchLastOver(result) { + // If we cant fetch next page + return !this.canFetchNextPage(result.data); + } + canFetchNextPage(result) { + // If one of cursor is valid + return !this.isNextCursorInvalid(result.next_cursor) || !this.isNextCursorInvalid(result.next_cursor_str); + } + isNextCursorInvalid(value) { + return value === undefined + || value === 0 + || value === -1 + || value === '0' + || value === '-1'; + } +} +exports.CursoredV1Paginator = CursoredV1Paginator; + + +/***/ }), + +/***/ 9848: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserFavoritesV1Paginator = exports.ListTimelineV1Paginator = exports.UserTimelineV1Paginator = exports.MentionTimelineV1Paginator = exports.HomeTimelineV1Paginator = void 0; +const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); +/** A generic TwitterPaginator able to consume TweetV1 timelines. */ +class TweetTimelineV1Paginator extends TwitterPaginator_1.default { + constructor() { + super(...arguments); + this.hasFinishedFetch = false; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.push(...result); + // HINT: This is an approximation, as "end" of pagination cannot be safely determined without cursors. + this.hasFinishedFetch = result.length === 0; + } + } + getNextQueryParams(maxResults) { + const lastestId = BigInt(this._realData[this._realData.length - 1].id_str); + return { + ...this.injectQueryParams(maxResults), + max_id: (lastestId - BigInt(1)).toString(), + }; + } + getPageLengthFromRequest(result) { + return result.data.length; + } + isFetchLastOver(result) { + return !result.data.length; + } + canFetchNextPage(result) { + return result.length > 0; + } + getItemArray() { + return this.tweets; + } + /** + * Tweets returned by paginator. + */ + get tweets() { + return this._realData; + } + get done() { + return super.done || this.hasFinishedFetch; + } +} +// Timelines +// Home +class HomeTimelineV1Paginator extends TweetTimelineV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'statuses/home_timeline.json'; + } +} +exports.HomeTimelineV1Paginator = HomeTimelineV1Paginator; +// Mention +class MentionTimelineV1Paginator extends TweetTimelineV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'statuses/mentions_timeline.json'; + } +} +exports.MentionTimelineV1Paginator = MentionTimelineV1Paginator; +// User +class UserTimelineV1Paginator extends TweetTimelineV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'statuses/user_timeline.json'; + } +} +exports.UserTimelineV1Paginator = UserTimelineV1Paginator; +// Lists +class ListTimelineV1Paginator extends TweetTimelineV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/statuses.json'; + } +} +exports.ListTimelineV1Paginator = ListTimelineV1Paginator; +// Favorites +class UserFavoritesV1Paginator extends TweetTimelineV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'favorites/list.json'; + } +} +exports.UserFavoritesV1Paginator = UserFavoritesV1Paginator; + + +/***/ }), + +/***/ 6301: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TweetV2ListTweetsPaginator = exports.TweetV2UserLikedTweetsPaginator = exports.TweetBookmarksTimelineV2Paginator = exports.TweetUserMentionTimelineV2Paginator = exports.TweetUserTimelineV2Paginator = exports.TweetHomeTimelineV2Paginator = exports.QuotedTweetsTimelineV2Paginator = exports.TweetSearchAllV2Paginator = exports.TweetSearchRecentV2Paginator = void 0; +const v2_paginator_1 = __nccwpck_require__(8108); +/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with since_id, until_id and next_token (when available). */ +class TweetTimelineV2Paginator extends v2_paginator_1.TwitterV2Paginator { + refreshInstanceFromResult(response, isNextPage) { + var _a; + const result = response.data; + const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : []; + this._rateLimit = response.rateLimit; + if (!this._realData.data) { + this._realData.data = []; + } + if (isNextPage) { + this._realData.meta.oldest_id = result.meta.oldest_id; + this._realData.meta.result_count += result.meta.result_count; + this._realData.meta.next_token = result.meta.next_token; + this._realData.data.push(...resultData); + } + else { + this._realData.meta.newest_id = result.meta.newest_id; + this._realData.meta.result_count += result.meta.result_count; + this._realData.data.unshift(...resultData); + } + this.updateIncludes(result); + } + getNextQueryParams(maxResults) { + this.assertUsable(); + const params = { ...this.injectQueryParams(maxResults) }; + if (this._realData.meta.next_token) { + params.next_token = this._realData.meta.next_token; + } + else { + if (params.start_time) { + // until_id and start_time are forbidden together for some reason, so convert start_time to a since_id. + params.since_id = this.dateStringToSnowflakeId(params.start_time); + delete params.start_time; + } + if (params.end_time) { + // until_id overrides end_time, so delete it + delete params.end_time; + } + params.until_id = this._realData.meta.oldest_id; + } + return params; + } + getPreviousQueryParams(maxResults) { + this.assertUsable(); + return { + ...this.injectQueryParams(maxResults), + since_id: this._realData.meta.newest_id, + }; + } + getPageLengthFromRequest(result) { + var _a, _b; + return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; + } + isFetchLastOver(result) { + var _a; + return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data); + } + canFetchNextPage(result) { + return !!result.meta.next_token; + } + getItemArray() { + return this.tweets; + } + dateStringToSnowflakeId(dateStr) { + const TWITTER_START_EPOCH = BigInt('1288834974657'); + const date = new Date(dateStr); + if (isNaN(date.valueOf())) { + throw new Error('Unable to convert start_time/end_time to a valid date. A ISO 8601 DateTime is excepted, please check your input.'); + } + const dateTimestamp = BigInt(date.valueOf()); + return ((dateTimestamp - TWITTER_START_EPOCH) << BigInt('22')).toString(); + } + /** + * Tweets returned by paginator. + */ + get tweets() { + var _a; + return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + } + get meta() { + return super.meta; + } +} +/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with pagination_tokens. */ +class TweetPaginableTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { + refreshInstanceFromResult(response, isNextPage) { + super.refreshInstanceFromResult(response, isNextPage); + const result = response.data; + if (isNextPage) { + this._realData.meta.oldest_id = result.meta.oldest_id; + } + else { + this._realData.meta.newest_id = result.meta.newest_id; + } + } + getItemArray() { + return this.tweets; + } + /** + * Tweets returned by paginator. + */ + get tweets() { + var _a; + return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + } + get meta() { + return super.meta; + } +} +// ---------------- +// - Tweet search - +// ---------------- +class TweetSearchRecentV2Paginator extends TweetTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'tweets/search/recent'; + } +} +exports.TweetSearchRecentV2Paginator = TweetSearchRecentV2Paginator; +class TweetSearchAllV2Paginator extends TweetTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'tweets/search/all'; + } +} +exports.TweetSearchAllV2Paginator = TweetSearchAllV2Paginator; +class QuotedTweetsTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'tweets/:id/quote_tweets'; + } +} +exports.QuotedTweetsTimelineV2Paginator = QuotedTweetsTimelineV2Paginator; +// ----------------- +// - Home timeline - +// ----------------- +class TweetHomeTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/timelines/reverse_chronological'; + } +} +exports.TweetHomeTimelineV2Paginator = TweetHomeTimelineV2Paginator; +class TweetUserTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/tweets'; + } +} +exports.TweetUserTimelineV2Paginator = TweetUserTimelineV2Paginator; +class TweetUserMentionTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/mentions'; + } +} +exports.TweetUserMentionTimelineV2Paginator = TweetUserMentionTimelineV2Paginator; +// ------------- +// - Bookmarks - +// ------------- +class TweetBookmarksTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/bookmarks'; + } +} +exports.TweetBookmarksTimelineV2Paginator = TweetBookmarksTimelineV2Paginator; +// --------------------------------------------------------------------------------- +// - Tweet lists (consume tweets with pagination tokens instead of since/until id) - +// --------------------------------------------------------------------------------- +/** A generic TwitterPaginator able to consume TweetV2 timelines. */ +class TweetListV2Paginator extends v2_paginator_1.TimelineV2Paginator { + /** + * Tweets returned by paginator. + */ + get tweets() { + var _a; + return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + } + get meta() { + return super.meta; + } + getItemArray() { + return this.tweets; + } +} +class TweetV2UserLikedTweetsPaginator extends TweetListV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/liked_tweets'; + } +} +exports.TweetV2UserLikedTweetsPaginator = TweetV2UserLikedTweetsPaginator; +class TweetV2ListTweetsPaginator extends TweetListV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/:id/tweets'; + } +} +exports.TweetV2ListTweetsPaginator = TweetV2ListTweetsPaginator; + + +/***/ }), + +/***/ 8985: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.FriendshipsOutgoingV1Paginator = exports.FriendshipsIncomingV1Paginator = exports.UserSearchV1Paginator = void 0; +const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); +const paginator_v1_1 = __nccwpck_require__(593); +/** A generic TwitterPaginator able to consume TweetV1 timelines. */ +class UserSearchV1Paginator extends TwitterPaginator_1.default { + constructor() { + super(...arguments); + this._endpoint = 'users/search.json'; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.push(...result); + } + } + getNextQueryParams(maxResults) { + var _a; + const previousPage = Number((_a = this._queryParams.page) !== null && _a !== void 0 ? _a : '1'); + return { + ...this._queryParams, + page: previousPage + 1, + ...maxResults ? { count: maxResults } : {}, + }; + } + getPageLengthFromRequest(result) { + return result.data.length; + } + isFetchLastOver(result) { + return !result.data.length; + } + canFetchNextPage(result) { + return result.length > 0; + } + getItemArray() { + return this.users; + } + /** + * Users returned by paginator. + */ + get users() { + return this._realData; + } +} +exports.UserSearchV1Paginator = UserSearchV1Paginator; +class FriendshipsIncomingV1Paginator extends paginator_v1_1.CursoredV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'friendships/incoming.json'; + this._maxResultsWhenFetchLast = 5000; + } + refreshInstanceFromResult(response, isNextPage) { + const result = response.data; + this._rateLimit = response.rateLimit; + if (isNextPage) { + this._realData.ids.push(...result.ids); + this._realData.next_cursor = result.next_cursor; + } + } + getPageLengthFromRequest(result) { + return result.data.ids.length; + } + getItemArray() { + return this.ids; + } + /** + * Users IDs returned by paginator. + */ + get ids() { + return this._realData.ids; + } +} +exports.FriendshipsIncomingV1Paginator = FriendshipsIncomingV1Paginator; +class FriendshipsOutgoingV1Paginator extends FriendshipsIncomingV1Paginator { + constructor() { + super(...arguments); + this._endpoint = 'friendships/outgoing.json'; + } +} +exports.FriendshipsOutgoingV1Paginator = FriendshipsOutgoingV1Paginator; + + +/***/ }), + +/***/ 2178: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TweetRetweetersUsersV2Paginator = exports.TweetLikingUsersV2Paginator = exports.UserListFollowersV2Paginator = exports.UserListMembersV2Paginator = exports.UserFollowingV2Paginator = exports.UserFollowersV2Paginator = exports.UserMutingUsersV2Paginator = exports.UserBlockingUsersV2Paginator = void 0; +const v2_paginator_1 = __nccwpck_require__(8108); +/** A generic PreviousableTwitterPaginator able to consume UserV2 timelines. */ +class UserTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { + getItemArray() { + return this.users; + } + /** + * Users returned by paginator. + */ + get users() { + var _a; + return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + } + get meta() { + return super.meta; + } +} +class UserBlockingUsersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/blocking'; + } +} +exports.UserBlockingUsersV2Paginator = UserBlockingUsersV2Paginator; +class UserMutingUsersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/muting'; + } +} +exports.UserMutingUsersV2Paginator = UserMutingUsersV2Paginator; +class UserFollowersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/followers'; + } +} +exports.UserFollowersV2Paginator = UserFollowersV2Paginator; +class UserFollowingV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'users/:id/following'; + } +} +exports.UserFollowingV2Paginator = UserFollowingV2Paginator; +class UserListMembersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/:id/members'; + } +} +exports.UserListMembersV2Paginator = UserListMembersV2Paginator; +class UserListFollowersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'lists/:id/followers'; + } +} +exports.UserListFollowersV2Paginator = UserListFollowersV2Paginator; +class TweetLikingUsersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'tweets/:id/liking_users'; + } +} +exports.TweetLikingUsersV2Paginator = TweetLikingUsersV2Paginator; +class TweetRetweetersUsersV2Paginator extends UserTimelineV2Paginator { + constructor() { + super(...arguments); + this._endpoint = 'tweets/:id/retweeted_by'; + } +} +exports.TweetRetweetersUsersV2Paginator = TweetRetweetersUsersV2Paginator; + + +/***/ }), + +/***/ 8108: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TimelineV2Paginator = exports.TwitterV2Paginator = void 0; +const includes_v2_helper_1 = __nccwpck_require__(876); +const TwitterPaginator_1 = __nccwpck_require__(5317); +/** A generic PreviousableTwitterPaginator with common v2 helper methods. */ +class TwitterV2Paginator extends TwitterPaginator_1.PreviousableTwitterPaginator { + updateIncludes(data) { + // Update errors + if (data.errors) { + if (!this._realData.errors) { + this._realData.errors = []; + } + this._realData.errors = [...this._realData.errors, ...data.errors]; + } + // Update includes + if (!data.includes) { + return; + } + if (!this._realData.includes) { + this._realData.includes = {}; + } + const includesRealData = this._realData.includes; + for (const [includeKey, includeArray] of Object.entries(data.includes)) { + if (!includesRealData[includeKey]) { + includesRealData[includeKey] = []; + } + includesRealData[includeKey] = [ + ...includesRealData[includeKey], + ...includeArray, + ]; + } + } + /** Throw if the current paginator is not usable. */ + assertUsable() { + if (this.unusable) { + throw new Error('Unable to use this paginator to fetch more data, as it does not contain any metadata.' + + ' Check .errors property for more details.'); + } + } + get meta() { + return this._realData.meta; + } + get includes() { + var _a; + if (!((_a = this._realData) === null || _a === void 0 ? void 0 : _a.includes)) { + return new includes_v2_helper_1.TwitterV2IncludesHelper(this._realData); + } + if (this._includesInstance) { + return this._includesInstance; + } + return this._includesInstance = new includes_v2_helper_1.TwitterV2IncludesHelper(this._realData); + } + get errors() { + var _a; + return (_a = this._realData.errors) !== null && _a !== void 0 ? _a : []; + } + /** `true` if this paginator only contains error payload and no metadata found to consume data. */ + get unusable() { + return this.errors.length > 0 && !this._realData.meta && !this._realData.data; + } +} +exports.TwitterV2Paginator = TwitterV2Paginator; +/** A generic TwitterV2Paginator able to consume v2 timelines that use max_results and pagination tokens. */ +class TimelineV2Paginator extends TwitterV2Paginator { + refreshInstanceFromResult(response, isNextPage) { + var _a; + const result = response.data; + const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : []; + this._rateLimit = response.rateLimit; + if (!this._realData.data) { + this._realData.data = []; + } + if (isNextPage) { + this._realData.meta.result_count += result.meta.result_count; + this._realData.meta.next_token = result.meta.next_token; + this._realData.data.push(...resultData); + } + else { + this._realData.meta.result_count += result.meta.result_count; + this._realData.meta.previous_token = result.meta.previous_token; + this._realData.data.unshift(...resultData); + } + this.updateIncludes(result); + } + getNextQueryParams(maxResults) { + this.assertUsable(); + return { + ...this.injectQueryParams(maxResults), + pagination_token: this._realData.meta.next_token, + }; + } + getPreviousQueryParams(maxResults) { + this.assertUsable(); + return { + ...this.injectQueryParams(maxResults), + pagination_token: this._realData.meta.previous_token, + }; + } + getPageLengthFromRequest(result) { + var _a, _b; + return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; + } + isFetchLastOver(result) { + var _a; + return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data); + } + canFetchNextPage(result) { + var _a; + return !!((_a = result.meta) === null || _a === void 0 ? void 0 : _a.next_token); + } +} +exports.TimelineV2Paginator = TimelineV2Paginator; + + +/***/ }), + +/***/ 247: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.applyResponseHooks = exports.hasRequestErrorPlugins = void 0; +const types_1 = __nccwpck_require__(1638); +/* Plugin helpers */ +function hasRequestErrorPlugins(client) { + var _a; + if (!((_a = client.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length)) { + return false; + } + for (const plugin of client.clientSettings.plugins) { + if (plugin.onRequestError || plugin.onResponseError) { + return true; + } + } + return false; +} +exports.hasRequestErrorPlugins = hasRequestErrorPlugins; +async function applyResponseHooks(requestParams, computedParams, requestOptions, error) { + let override; + if (error instanceof types_1.ApiRequestError || error instanceof types_1.ApiPartialResponseError) { + override = await this.applyPluginMethod('onRequestError', { + client: this, + url: this.getUrlObjectFromUrlString(requestParams.url), + params: requestParams, + computedParams, + requestOptions, + error, + }); + } + else if (error instanceof types_1.ApiResponseError) { + override = await this.applyPluginMethod('onResponseError', { + client: this, + url: this.getUrlObjectFromUrlString(requestParams.url), + params: requestParams, + computedParams, + requestOptions, + error, + }); + } + if (override && override instanceof types_1.TwitterApiPluginResponseOverride) { + return override.value; + } + return Promise.reject(error); +} +exports.applyResponseHooks = applyResponseHooks; + + +/***/ }), + +/***/ 6273: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiV2Settings = void 0; +exports.TwitterApiV2Settings = { + debug: false, + deprecationWarnings: true, + logger: { log: console.log.bind(console) }, +}; + + +/***/ }), + +/***/ 9362: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TweetStream = void 0; +const events_1 = __nccwpck_require__(2361); +const request_handler_helper_1 = __importDefault(__nccwpck_require__(3768)); +const types_1 = __nccwpck_require__(1638); +const TweetStreamEventCombiner_1 = __importDefault(__nccwpck_require__(1132)); +const TweetStreamParser_1 = __importStar(__nccwpck_require__(7467)); +// In seconds +const basicRetriesAttempt = [5, 15, 30, 60, 90, 120, 180, 300, 600, 900]; +// Default retry function +const basicReconnectRetry = tryOccurence => tryOccurence > basicRetriesAttempt.length + ? 901000 + : basicRetriesAttempt[tryOccurence - 1] * 1000; +class TweetStream extends events_1.EventEmitter { + constructor(requestData, connection) { + super(); + this.requestData = requestData; + this.autoReconnect = false; + this.autoReconnectRetries = 5; + // 2 minutes without any Twitter signal + this.keepAliveTimeoutMs = 1000 * 120; + this.nextRetryTimeout = basicReconnectRetry; + this.parser = new TweetStreamParser_1.default(); + this.connectionProcessRunning = false; + this.onKeepAliveTimeout = this.onKeepAliveTimeout.bind(this); + this.initEventsFromParser(); + if (connection) { + this.req = connection.req; + this.res = connection.res; + this.originalResponse = connection.originalResponse; + this.initEventsFromRequest(); + } + } + on(event, handler) { + return super.on(event, handler); + } + initEventsFromRequest() { + if (!this.req || !this.res) { + throw new Error('TweetStream error: You cannot init TweetStream without a request and response object.'); + } + const errorHandler = (err) => { + this.emit(types_1.ETwitterStreamEvent.ConnectionError, err); + this.emit(types_1.ETwitterStreamEvent.Error, { + type: types_1.ETwitterStreamEvent.ConnectionError, + error: err, + message: 'Connection lost or closed by Twitter.', + }); + this.onConnectionError(); + }; + this.req.on('error', errorHandler); + this.res.on('error', errorHandler); + // Usually, connection should not be closed by Twitter! + this.res.on('close', () => errorHandler(new Error('Connection closed by Twitter.'))); + this.res.on('data', (chunk) => { + this.resetKeepAliveTimeout(); + if (chunk.toString() === '\r\n') { + return this.emit(types_1.ETwitterStreamEvent.DataKeepAlive); + } + this.parser.push(chunk.toString()); + }); + // Starts the keep alive timeout + this.resetKeepAliveTimeout(); + } + initEventsFromParser() { + const payloadIsError = this.requestData.payloadIsError; + this.parser.on(TweetStreamParser_1.EStreamParserEvent.ParsedData, (eventData) => { + if (payloadIsError && payloadIsError(eventData)) { + this.emit(types_1.ETwitterStreamEvent.DataError, eventData); + this.emit(types_1.ETwitterStreamEvent.Error, { + type: types_1.ETwitterStreamEvent.DataError, + error: eventData, + message: 'Twitter sent a payload that is detected as an error payload.', + }); + } + else { + this.emit(types_1.ETwitterStreamEvent.Data, eventData); + } + }); + this.parser.on(TweetStreamParser_1.EStreamParserEvent.ParseError, (error) => { + this.emit(types_1.ETwitterStreamEvent.TweetParseError, error); + this.emit(types_1.ETwitterStreamEvent.Error, { + type: types_1.ETwitterStreamEvent.TweetParseError, + error, + message: 'Failed to parse stream data.', + }); + }); + } + resetKeepAliveTimeout() { + this.unbindKeepAliveTimeout(); + if (this.keepAliveTimeoutMs !== Infinity) { + this.keepAliveTimeout = setTimeout(this.onKeepAliveTimeout, this.keepAliveTimeoutMs); + } + } + onKeepAliveTimeout() { + this.emit(types_1.ETwitterStreamEvent.ConnectionLost); + this.onConnectionError(); + } + unbindTimeouts() { + this.unbindRetryTimeout(); + this.unbindKeepAliveTimeout(); + } + unbindKeepAliveTimeout() { + if (this.keepAliveTimeout) { + clearTimeout(this.keepAliveTimeout); + this.keepAliveTimeout = undefined; + } + } + unbindRetryTimeout() { + if (this.retryTimeout) { + clearTimeout(this.retryTimeout); + this.retryTimeout = undefined; + } + } + closeWithoutEmit() { + this.unbindTimeouts(); + if (this.res) { + this.res.removeAllListeners(); + // Close response silentely + this.res.destroy(); + } + if (this.req) { + this.req.removeAllListeners(); + // Close connection silentely + this.req.destroy(); + } + } + /** Terminate connection to Twitter. */ + close() { + this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); + this.closeWithoutEmit(); + } + /** Unbind all listeners, and close connection. */ + destroy() { + this.removeAllListeners(); + this.close(); + } + /** + * Make a new request that creates a new `TweetStream` instance with + * the same parameters, and bind current listeners to new stream. + */ + async clone() { + const newRequest = new request_handler_helper_1.default(this.requestData); + const newStream = await newRequest.makeRequestAsStream(); + // Clone attached listeners + const listenerNames = this.eventNames(); + for (const listener of listenerNames) { + const callbacks = this.listeners(listener); + for (const callback of callbacks) { + newStream.on(listener, callback); + } + } + return newStream; + } + /** Start initial stream connection, setup options on current instance and returns itself. */ + async connect(options = {}) { + if (typeof options.autoReconnect !== 'undefined') { + this.autoReconnect = options.autoReconnect; + } + if (typeof options.autoReconnectRetries !== 'undefined') { + this.autoReconnectRetries = options.autoReconnectRetries === 'unlimited' + ? Infinity + : options.autoReconnectRetries; + } + if (typeof options.keepAliveTimeout !== 'undefined') { + this.keepAliveTimeoutMs = options.keepAliveTimeout === 'disable' + ? Infinity + : options.keepAliveTimeout; + } + if (typeof options.nextRetryTimeout !== 'undefined') { + this.nextRetryTimeout = options.nextRetryTimeout; + } + // Make the connection + this.unbindTimeouts(); + try { + await this.reconnect(); + } + catch (e) { + this.emit(types_1.ETwitterStreamEvent.ConnectError, 0); + this.emit(types_1.ETwitterStreamEvent.Error, { + type: types_1.ETwitterStreamEvent.ConnectError, + error: e, + message: 'Connect error - Initial connection just failed.', + }); + // Only make a reconnection attempt if autoReconnect is true! + // Otherwise, let error be propagated + if (this.autoReconnect) { + this.makeAutoReconnectRetry(0, e); + } + else { + throw e; + } + } + return this; + } + /** Make a new request to (re)connect to Twitter. */ + async reconnect() { + if (this.connectionProcessRunning) { + throw new Error('Connection process is already running.'); + } + this.connectionProcessRunning = true; + try { + let initialConnection = true; + if (this.req) { + initialConnection = false; + this.closeWithoutEmit(); + } + const { req, res, originalResponse } = await new request_handler_helper_1.default(this.requestData).makeRequestAndResolveWhenReady(); + this.req = req; + this.res = res; + this.originalResponse = originalResponse; + this.emit(initialConnection ? types_1.ETwitterStreamEvent.Connected : types_1.ETwitterStreamEvent.Reconnected); + this.parser.reset(); + this.initEventsFromRequest(); + } + finally { + this.connectionProcessRunning = false; + } + } + async onConnectionError(retryOccurence = 0) { + this.unbindTimeouts(); + // Close the request if necessary + this.closeWithoutEmit(); + // Terminate stream by events if necessary (no auto-reconnect or retries exceeded) + if (!this.autoReconnect) { + this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); + return; + } + if (retryOccurence >= this.autoReconnectRetries) { + this.emit(types_1.ETwitterStreamEvent.ReconnectLimitExceeded); + this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); + return; + } + // If all other conditions fails, do a reconnect attempt + try { + this.emit(types_1.ETwitterStreamEvent.ReconnectAttempt, retryOccurence); + await this.reconnect(); + } + catch (e) { + this.emit(types_1.ETwitterStreamEvent.ReconnectError, retryOccurence); + this.emit(types_1.ETwitterStreamEvent.Error, { + type: types_1.ETwitterStreamEvent.ReconnectError, + error: e, + message: `Reconnect error - ${retryOccurence + 1} attempts made yet.`, + }); + this.makeAutoReconnectRetry(retryOccurence, e); + } + } + makeAutoReconnectRetry(retryOccurence, error) { + const nextRetry = this.nextRetryTimeout(retryOccurence + 1, error); + this.retryTimeout = setTimeout(() => { + this.onConnectionError(retryOccurence + 1); + }, nextRetry); + } + async *[Symbol.asyncIterator]() { + const eventCombiner = new TweetStreamEventCombiner_1.default(this); + try { + while (true) { + if (!this.req || this.req.aborted) { + throw new Error('Connection closed'); + } + if (eventCombiner.hasStack()) { + yield* eventCombiner.popStack(); + } + const { type, payload } = await eventCombiner.nextEvent(); + if (type === 'error') { + throw payload; + } + } + } + finally { + eventCombiner.destroy(); + } + } +} +exports.TweetStream = TweetStream; +exports["default"] = TweetStream; + + +/***/ }), + +/***/ 1132: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TweetStreamEventCombiner = void 0; +const events_1 = __nccwpck_require__(2361); +const types_1 = __nccwpck_require__(1638); +class TweetStreamEventCombiner extends events_1.EventEmitter { + constructor(stream) { + super(); + this.stream = stream; + this.stack = []; + this.onStreamData = this.onStreamData.bind(this); + this.onStreamError = this.onStreamError.bind(this); + this.onceNewEvent = this.once.bind(this, 'event'); + // Init events from stream + stream.on(types_1.ETwitterStreamEvent.Data, this.onStreamData); + // Ignore reconnect errors: Don't close event combiner until connection error/closed + stream.on(types_1.ETwitterStreamEvent.ConnectionError, this.onStreamError); + stream.on(types_1.ETwitterStreamEvent.TweetParseError, this.onStreamError); + stream.on(types_1.ETwitterStreamEvent.ConnectionClosed, this.onStreamError); + } + /** Returns a new `Promise` that will `resolve` on next event (`data` or any sort of error). */ + nextEvent() { + return new Promise(this.onceNewEvent); + } + /** Returns `true` if there's something in the stack. */ + hasStack() { + return this.stack.length > 0; + } + /** Returns stacked data events, and clean the stack. */ + popStack() { + const stack = this.stack; + this.stack = []; + return stack; + } + /** Cleanup all the listeners attached on stream. */ + destroy() { + this.removeAllListeners(); + this.stream.off(types_1.ETwitterStreamEvent.Data, this.onStreamData); + this.stream.off(types_1.ETwitterStreamEvent.ConnectionError, this.onStreamError); + this.stream.off(types_1.ETwitterStreamEvent.TweetParseError, this.onStreamError); + this.stream.off(types_1.ETwitterStreamEvent.ConnectionClosed, this.onStreamError); + } + emitEvent(type, payload) { + this.emit('event', { type, payload }); + } + onStreamError(payload) { + this.emitEvent('error', payload); + } + onStreamData(payload) { + this.stack.push(payload); + this.emitEvent('data', payload); + } +} +exports.TweetStreamEventCombiner = TweetStreamEventCombiner; +exports["default"] = TweetStreamEventCombiner; + + +/***/ }), + +/***/ 7467: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.EStreamParserEvent = void 0; +const events_1 = __nccwpck_require__(2361); +class TweetStreamParser extends events_1.EventEmitter { + constructor() { + super(...arguments); + this.currentMessage = ''; + } + // Code partially belongs to twitter-stream-api for this + // https://github.com/trygve-lie/twitter-stream-api/blob/master/lib/parser.js + push(chunk) { + this.currentMessage += chunk; + chunk = this.currentMessage; + const size = chunk.length; + let start = 0; + let offset = 0; + while (offset < size) { + // Take [offset, offset+1] inside a new string + if (chunk.slice(offset, offset + 2) === '\r\n') { + // If chunk contains \r\n after current offset, + // parse [start, ..., offset] as a tweet + const piece = chunk.slice(start, offset); + start = offset += 2; + // If empty object + if (!piece.length) { + continue; + } + try { + const payload = JSON.parse(piece); + if (payload) { + this.emit(EStreamParserEvent.ParsedData, payload); + continue; + } + } + catch (error) { + this.emit(EStreamParserEvent.ParseError, error); + } + } + offset++; + } + this.currentMessage = chunk.slice(start, size); + } + /** Reset the currently stored message (f.e. on connection reset) */ + reset() { + this.currentMessage = ''; + } +} +exports["default"] = TweetStreamParser; +var EStreamParserEvent; +(function (EStreamParserEvent) { + EStreamParserEvent["ParsedData"] = "parsed data"; + EStreamParserEvent["ParseError"] = "parse error"; +})(EStreamParserEvent = exports.EStreamParserEvent || (exports.EStreamParserEvent = {})); + + +/***/ }), + +/***/ 8294: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 948: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ETwitterStreamEvent = void 0; +var ETwitterStreamEvent; +(function (ETwitterStreamEvent) { + ETwitterStreamEvent["Connected"] = "connected"; + ETwitterStreamEvent["ConnectError"] = "connect error"; + ETwitterStreamEvent["ConnectionError"] = "connection error"; + ETwitterStreamEvent["ConnectionClosed"] = "connection closed"; + ETwitterStreamEvent["ConnectionLost"] = "connection lost"; + ETwitterStreamEvent["ReconnectAttempt"] = "reconnect attempt"; + ETwitterStreamEvent["Reconnected"] = "reconnected"; + ETwitterStreamEvent["ReconnectError"] = "reconnect error"; + ETwitterStreamEvent["ReconnectLimitExceeded"] = "reconnect limit exceeded"; + ETwitterStreamEvent["DataKeepAlive"] = "data keep-alive"; + ETwitterStreamEvent["Data"] = "data event content"; + ETwitterStreamEvent["DataError"] = "data twitter error"; + ETwitterStreamEvent["TweetParseError"] = "data tweet parse error"; + ETwitterStreamEvent["Error"] = "stream error"; +})(ETwitterStreamEvent = exports.ETwitterStreamEvent || (exports.ETwitterStreamEvent = {})); + + +/***/ }), + +/***/ 3549: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.EApiV2ErrorCode = exports.EApiV1ErrorCode = exports.ApiResponseError = exports.ApiPartialResponseError = exports.ApiRequestError = exports.ETwitterApiError = void 0; +var ETwitterApiError; +(function (ETwitterApiError) { + ETwitterApiError["Request"] = "request"; + ETwitterApiError["PartialResponse"] = "partial-response"; + ETwitterApiError["Response"] = "response"; +})(ETwitterApiError = exports.ETwitterApiError || (exports.ETwitterApiError = {})); +/* ERRORS INSTANCES */ +class ApiError extends Error { + constructor() { + super(...arguments); + this.error = true; + } +} +class ApiRequestError extends ApiError { + constructor(message, options) { + super(message); + this.type = ETwitterApiError.Request; + Error.captureStackTrace(this, this.constructor); + // Do not show on Node stack trace + Object.defineProperty(this, '_options', { value: options }); + } + get request() { + return this._options.request; + } + get requestError() { + return this._options.requestError; + } + toJSON() { + return { + type: this.type, + error: this.requestError, + }; + } +} +exports.ApiRequestError = ApiRequestError; +class ApiPartialResponseError extends ApiError { + constructor(message, options) { + super(message); + this.type = ETwitterApiError.PartialResponse; + Error.captureStackTrace(this, this.constructor); + // Do not show on Node stack trace + Object.defineProperty(this, '_options', { value: options }); + } + get request() { + return this._options.request; + } + get response() { + return this._options.response; + } + get responseError() { + return this._options.responseError; + } + get rawContent() { + return this._options.rawContent; + } + toJSON() { + return { + type: this.type, + error: this.responseError, + }; + } +} +exports.ApiPartialResponseError = ApiPartialResponseError; +class ApiResponseError extends ApiError { + constructor(message, options) { + super(message); + this.type = ETwitterApiError.Response; + Error.captureStackTrace(this, this.constructor); + // Do not show on Node stack trace + Object.defineProperty(this, '_options', { value: options }); + this.code = options.code; + this.headers = options.headers; + this.rateLimit = options.rateLimit; + // Fix bad error data payload on some v1 endpoints (see https://github.com/PLhery/node-twitter-api-v2/issues/342) + if (options.data && typeof options.data === 'object' && 'error' in options.data && !options.data.errors) { + const data = { ...options.data }; + data.errors = [{ + code: EApiV1ErrorCode.InternalError, + message: data.error, + }]; + this.data = data; + } + else { + this.data = options.data; + } + } + get request() { + return this._options.request; + } + get response() { + return this._options.response; + } + /** Check for presence of one of given v1/v2 error codes. */ + hasErrorCode(...codes) { + const errors = this.errors; + // No errors + if (!(errors === null || errors === void 0 ? void 0 : errors.length)) { + return false; + } + // v1 errors + if ('code' in errors[0]) { + const v1errors = errors; + return v1errors.some(error => codes.includes(error.code)); + } + // v2 error + const v2error = this.data; + return codes.includes(v2error.type); + } + get errors() { + var _a; + return (_a = this.data) === null || _a === void 0 ? void 0 : _a.errors; + } + get rateLimitError() { + return this.code === 420 || this.code === 429; + } + get isAuthError() { + if (this.code === 401) { + return true; + } + return this.hasErrorCode(EApiV1ErrorCode.AuthTimestampInvalid, EApiV1ErrorCode.AuthenticationFail, EApiV1ErrorCode.BadAuthenticationData, EApiV1ErrorCode.InvalidOrExpiredToken); + } + toJSON() { + return { + type: this.type, + code: this.code, + error: this.data, + rateLimit: this.rateLimit, + headers: this.headers, + }; + } +} +exports.ApiResponseError = ApiResponseError; +var EApiV1ErrorCode; +(function (EApiV1ErrorCode) { + // Location errors + EApiV1ErrorCode[EApiV1ErrorCode["InvalidCoordinates"] = 3] = "InvalidCoordinates"; + EApiV1ErrorCode[EApiV1ErrorCode["NoLocationFound"] = 13] = "NoLocationFound"; + // Authentication failures + EApiV1ErrorCode[EApiV1ErrorCode["AuthenticationFail"] = 32] = "AuthenticationFail"; + EApiV1ErrorCode[EApiV1ErrorCode["InvalidOrExpiredToken"] = 89] = "InvalidOrExpiredToken"; + EApiV1ErrorCode[EApiV1ErrorCode["UnableToVerifyCredentials"] = 99] = "UnableToVerifyCredentials"; + EApiV1ErrorCode[EApiV1ErrorCode["AuthTimestampInvalid"] = 135] = "AuthTimestampInvalid"; + EApiV1ErrorCode[EApiV1ErrorCode["BadAuthenticationData"] = 215] = "BadAuthenticationData"; + // Resources not found or visible + EApiV1ErrorCode[EApiV1ErrorCode["NoUserMatch"] = 17] = "NoUserMatch"; + EApiV1ErrorCode[EApiV1ErrorCode["UserNotFound"] = 50] = "UserNotFound"; + EApiV1ErrorCode[EApiV1ErrorCode["ResourceNotFound"] = 34] = "ResourceNotFound"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetNotFound"] = 144] = "TweetNotFound"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetNotVisible"] = 179] = "TweetNotVisible"; + EApiV1ErrorCode[EApiV1ErrorCode["NotAllowedResource"] = 220] = "NotAllowedResource"; + EApiV1ErrorCode[EApiV1ErrorCode["MediaIdNotFound"] = 325] = "MediaIdNotFound"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetNoLongerAvailable"] = 421] = "TweetNoLongerAvailable"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetViolatedRules"] = 422] = "TweetViolatedRules"; + // Account errors + EApiV1ErrorCode[EApiV1ErrorCode["TargetUserSuspended"] = 63] = "TargetUserSuspended"; + EApiV1ErrorCode[EApiV1ErrorCode["YouAreSuspended"] = 64] = "YouAreSuspended"; + EApiV1ErrorCode[EApiV1ErrorCode["AccountUpdateFailed"] = 120] = "AccountUpdateFailed"; + EApiV1ErrorCode[EApiV1ErrorCode["NoSelfSpamReport"] = 36] = "NoSelfSpamReport"; + EApiV1ErrorCode[EApiV1ErrorCode["NoSelfMute"] = 271] = "NoSelfMute"; + EApiV1ErrorCode[EApiV1ErrorCode["AccountLocked"] = 326] = "AccountLocked"; + // Application live errors / Twitter errors + EApiV1ErrorCode[EApiV1ErrorCode["RateLimitExceeded"] = 88] = "RateLimitExceeded"; + EApiV1ErrorCode[EApiV1ErrorCode["NoDMRightForApp"] = 93] = "NoDMRightForApp"; + EApiV1ErrorCode[EApiV1ErrorCode["OverCapacity"] = 130] = "OverCapacity"; + EApiV1ErrorCode[EApiV1ErrorCode["InternalError"] = 131] = "InternalError"; + EApiV1ErrorCode[EApiV1ErrorCode["TooManyFollowings"] = 161] = "TooManyFollowings"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetLimitExceeded"] = 185] = "TweetLimitExceeded"; + EApiV1ErrorCode[EApiV1ErrorCode["DuplicatedTweet"] = 187] = "DuplicatedTweet"; + EApiV1ErrorCode[EApiV1ErrorCode["TooManySpamReports"] = 205] = "TooManySpamReports"; + EApiV1ErrorCode[EApiV1ErrorCode["RequestLooksLikeSpam"] = 226] = "RequestLooksLikeSpam"; + EApiV1ErrorCode[EApiV1ErrorCode["NoWriteRightForApp"] = 261] = "NoWriteRightForApp"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetActionsDisabled"] = 425] = "TweetActionsDisabled"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetRepliesRestricted"] = 433] = "TweetRepliesRestricted"; + // Invalid request parameters + EApiV1ErrorCode[EApiV1ErrorCode["NamedParameterMissing"] = 38] = "NamedParameterMissing"; + EApiV1ErrorCode[EApiV1ErrorCode["InvalidAttachmentUrl"] = 44] = "InvalidAttachmentUrl"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetTextTooLong"] = 186] = "TweetTextTooLong"; + EApiV1ErrorCode[EApiV1ErrorCode["MissingUrlParameter"] = 195] = "MissingUrlParameter"; + EApiV1ErrorCode[EApiV1ErrorCode["NoMultipleGifs"] = 323] = "NoMultipleGifs"; + EApiV1ErrorCode[EApiV1ErrorCode["InvalidMediaIds"] = 324] = "InvalidMediaIds"; + EApiV1ErrorCode[EApiV1ErrorCode["InvalidUrl"] = 407] = "InvalidUrl"; + EApiV1ErrorCode[EApiV1ErrorCode["TooManyTweetAttachments"] = 386] = "TooManyTweetAttachments"; + // Already sent/deleted item + EApiV1ErrorCode[EApiV1ErrorCode["StatusAlreadyFavorited"] = 139] = "StatusAlreadyFavorited"; + EApiV1ErrorCode[EApiV1ErrorCode["FollowRequestAlreadySent"] = 160] = "FollowRequestAlreadySent"; + EApiV1ErrorCode[EApiV1ErrorCode["CannotUnmuteANonMutedAccount"] = 272] = "CannotUnmuteANonMutedAccount"; + EApiV1ErrorCode[EApiV1ErrorCode["TweetAlreadyRetweeted"] = 327] = "TweetAlreadyRetweeted"; + EApiV1ErrorCode[EApiV1ErrorCode["ReplyToDeletedTweet"] = 385] = "ReplyToDeletedTweet"; + // DM Errors + EApiV1ErrorCode[EApiV1ErrorCode["DMReceiverNotFollowingYou"] = 150] = "DMReceiverNotFollowingYou"; + EApiV1ErrorCode[EApiV1ErrorCode["UnableToSendDM"] = 151] = "UnableToSendDM"; + EApiV1ErrorCode[EApiV1ErrorCode["MustAllowDMFromAnyone"] = 214] = "MustAllowDMFromAnyone"; + EApiV1ErrorCode[EApiV1ErrorCode["CannotSendDMToThisUser"] = 349] = "CannotSendDMToThisUser"; + EApiV1ErrorCode[EApiV1ErrorCode["DMTextTooLong"] = 354] = "DMTextTooLong"; + // Appication misconfiguration + EApiV1ErrorCode[EApiV1ErrorCode["SubscriptionAlreadyExists"] = 355] = "SubscriptionAlreadyExists"; + EApiV1ErrorCode[EApiV1ErrorCode["CallbackUrlNotApproved"] = 415] = "CallbackUrlNotApproved"; + EApiV1ErrorCode[EApiV1ErrorCode["SuspendedApplication"] = 416] = "SuspendedApplication"; + EApiV1ErrorCode[EApiV1ErrorCode["OobOauthIsNotAllowed"] = 417] = "OobOauthIsNotAllowed"; +})(EApiV1ErrorCode = exports.EApiV1ErrorCode || (exports.EApiV1ErrorCode = {})); +var EApiV2ErrorCode; +(function (EApiV2ErrorCode) { + // Request errors + EApiV2ErrorCode["InvalidRequest"] = "https://api.twitter.com/2/problems/invalid-request"; + EApiV2ErrorCode["ClientForbidden"] = "https://api.twitter.com/2/problems/client-forbidden"; + EApiV2ErrorCode["UnsupportedAuthentication"] = "https://api.twitter.com/2/problems/unsupported-authentication"; + // Stream rules errors + EApiV2ErrorCode["InvalidRules"] = "https://api.twitter.com/2/problems/invalid-rules"; + EApiV2ErrorCode["TooManyRules"] = "https://api.twitter.com/2/problems/rule-cap"; + EApiV2ErrorCode["DuplicatedRules"] = "https://api.twitter.com/2/problems/duplicate-rules"; + // Twitter errors + EApiV2ErrorCode["RateLimitExceeded"] = "https://api.twitter.com/2/problems/usage-capped"; + EApiV2ErrorCode["ConnectionError"] = "https://api.twitter.com/2/problems/streaming-connection"; + EApiV2ErrorCode["ClientDisconnected"] = "https://api.twitter.com/2/problems/client-disconnected"; + EApiV2ErrorCode["TwitterDisconnectedYou"] = "https://api.twitter.com/2/problems/operational-disconnect"; + // Resource errors + EApiV2ErrorCode["ResourceNotFound"] = "https://api.twitter.com/2/problems/resource-not-found"; + EApiV2ErrorCode["ResourceUnauthorized"] = "https://api.twitter.com/2/problems/not-authorized-for-resource"; + EApiV2ErrorCode["DisallowedResource"] = "https://api.twitter.com/2/problems/disallowed-resource"; +})(EApiV2ErrorCode = exports.EApiV2ErrorCode || (exports.EApiV2ErrorCode = {})); + + +/***/ }), + +/***/ 1638: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(5401), exports); +__exportStar(__nccwpck_require__(7109), exports); +__exportStar(__nccwpck_require__(3549), exports); +__exportStar(__nccwpck_require__(6296), exports); +__exportStar(__nccwpck_require__(948), exports); +__exportStar(__nccwpck_require__(8294), exports); +__exportStar(__nccwpck_require__(547), exports); + + +/***/ }), + +/***/ 3924: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiPluginResponseOverride = void 0; +class TwitterApiPluginResponseOverride { + constructor(value) { + this.value = value; + } +} +exports.TwitterApiPluginResponseOverride = TwitterApiPluginResponseOverride; + + +/***/ }), + +/***/ 547: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(3924), exports); + + +/***/ }), + +/***/ 6296: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 9740: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 6430: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.EDirectMessageEventTypeV1 = void 0; +// Creation of DMs +var EDirectMessageEventTypeV1; +(function (EDirectMessageEventTypeV1) { + EDirectMessageEventTypeV1["Create"] = "message_create"; + EDirectMessageEventTypeV1["WelcomeCreate"] = "welcome_message"; +})(EDirectMessageEventTypeV1 = exports.EDirectMessageEventTypeV1 || (exports.EDirectMessageEventTypeV1 = {})); + + +/***/ }), + +/***/ 6426: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 712: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 5401: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(2362), exports); +__exportStar(__nccwpck_require__(7953), exports); +__exportStar(__nccwpck_require__(6426), exports); +__exportStar(__nccwpck_require__(9045), exports); +__exportStar(__nccwpck_require__(9740), exports); +__exportStar(__nccwpck_require__(712), exports); +__exportStar(__nccwpck_require__(9622), exports); +__exportStar(__nccwpck_require__(6430), exports); +__exportStar(__nccwpck_require__(3268), exports); + + +/***/ }), + +/***/ 3268: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 2362: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 9622: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 7953: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.EUploadMimeType = void 0; +var EUploadMimeType; +(function (EUploadMimeType) { + EUploadMimeType["Jpeg"] = "image/jpeg"; + EUploadMimeType["Mp4"] = "video/mp4"; + EUploadMimeType["Gif"] = "image/gif"; + EUploadMimeType["Png"] = "image/png"; + EUploadMimeType["Srt"] = "text/plain"; + EUploadMimeType["Webp"] = "image/webp"; +})(EUploadMimeType = exports.EUploadMimeType || (exports.EUploadMimeType = {})); + + +/***/ }), + +/***/ 9045: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 7109: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(9608), exports); +__exportStar(__nccwpck_require__(7295), exports); +__exportStar(__nccwpck_require__(5894), exports); +__exportStar(__nccwpck_require__(4292), exports); +__exportStar(__nccwpck_require__(7323), exports); +__exportStar(__nccwpck_require__(970), exports); + + +/***/ }), + +/***/ 970: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 7323: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 9608: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// --------------- +// -- Streaming -- +// --------------- +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 5894: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 7295: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +; + + +/***/ }), + +/***/ 4292: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ 7030: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiv1 = void 0; +const globals_1 = __nccwpck_require__(3444); +const dm_paginator_v1_1 = __nccwpck_require__(823); +const types_1 = __nccwpck_require__(1638); +const client_v1_write_1 = __importDefault(__nccwpck_require__(6685)); +/** + * Twitter v1.1 API client with read/write/DMs rights. + */ +class TwitterApiv1 extends client_v1_write_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V1_1_PREFIX; + } + /** + * Get a client with read/write rights. + */ + get readWrite() { + return this; + } + /* Direct messages */ + // Part: Sending and receiving events + /** + * Publishes a new message_create event resulting in a Direct Message sent to a specified user from the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/new-event + */ + sendDm({ recipient_id, custom_profile_id, ...params }) { + const args = { + event: { + type: types_1.EDirectMessageEventTypeV1.Create, + [types_1.EDirectMessageEventTypeV1.Create]: { + target: { recipient_id }, + message_data: params, + }, + }, + }; + if (custom_profile_id) { + args.event[types_1.EDirectMessageEventTypeV1.Create].custom_profile_id = custom_profile_id; + } + return this.post('direct_messages/events/new.json', args, { + forceBodyMode: 'json', + }); + } + /** + * Returns a single Direct Message event by the given id. + * + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/get-event + */ + getDmEvent(id) { + return this.get('direct_messages/events/show.json', { id }); + } + /** + * Deletes the direct message specified in the required ID parameter. + * The authenticating user must be the recipient of the specified direct message. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/delete-message-event + */ + deleteDm(id) { + return this.delete('direct_messages/events/destroy.json', { id }); + } + /** + * Returns all Direct Message events (both sent and received) within the last 30 days. + * Sorted in reverse-chronological order. + * + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events + */ + async listDmEvents(args = {}) { + const queryParams = { ...args }; + const initialRq = await this.get('direct_messages/events/list.json', queryParams, { fullResponse: true }); + return new dm_paginator_v1_1.DmEventsV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + // Part: Welcome messages (events) + /** + * Creates a new Welcome Message that will be stored and sent in the future from the authenticating user in defined circumstances. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message + */ + newWelcomeDm(name, data) { + const args = { + [types_1.EDirectMessageEventTypeV1.WelcomeCreate]: { + name, + message_data: data, + }, + }; + return this.post('direct_messages/welcome_messages/new.json', args, { + forceBodyMode: 'json', + }); + } + /** + * Returns a Welcome Message by the given id. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message + */ + getWelcomeDm(id) { + return this.get('direct_messages/welcome_messages/show.json', { id }); + } + /** + * Deletes a Welcome Message by the given id. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message + */ + deleteWelcomeDm(id) { + return this.delete('direct_messages/welcome_messages/destroy.json', { id }); + } + /** + * Updates a Welcome Message by the given ID. + * Updates to the welcome_message object are atomic. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/update-welcome-message + */ + updateWelcomeDm(id, data) { + const args = { message_data: data }; + return this.put('direct_messages/welcome_messages/update.json', args, { + forceBodyMode: 'json', + query: { id }, + }); + } + /** + * Returns all Direct Message events (both sent and received) within the last 30 days. + * Sorted in reverse-chronological order. + * + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events + */ + async listWelcomeDms(args = {}) { + const queryParams = { ...args }; + const initialRq = await this.get('direct_messages/welcome_messages/list.json', queryParams, { fullResponse: true }); + return new dm_paginator_v1_1.WelcomeDmV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + // Part: Welcome message (rules) + /** + * Creates a new Welcome Message Rule that determines which Welcome Message will be shown in a given conversation. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message-rule + */ + newWelcomeDmRule(welcomeMessageId) { + return this.post('direct_messages/welcome_messages/rules/new.json', { + welcome_message_rule: { welcome_message_id: welcomeMessageId }, + }, { + forceBodyMode: 'json', + }); + } + /** + * Returns a Welcome Message Rule by the given id. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message-rule + */ + getWelcomeDmRule(id) { + return this.get('direct_messages/welcome_messages/rules/show.json', { id }); + } + /** + * Deletes a Welcome Message Rule by the given id. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message-rule + */ + deleteWelcomeDmRule(id) { + return this.delete('direct_messages/welcome_messages/rules/destroy.json', { id }); + } + /** + * Retrieves all welcome DM rules for this account. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/list-welcome-message-rules + */ + async listWelcomeDmRules(args = {}) { + const queryParams = { ...args }; + return this.get('direct_messages/welcome_messages/rules/list.json', queryParams); + } + /** + * Set the current showed welcome message for logged account ; wrapper for Welcome DM rules. + * Test if a rule already exists, delete if any, then create a rule for current message ID. + * + * If you don't have already a welcome message, create it with `.newWelcomeMessage`. + */ + async setWelcomeDm(welcomeMessageId, deleteAssociatedWelcomeDmWhenDeletingRule = true) { + var _a; + const existingRules = await this.listWelcomeDmRules(); + if ((_a = existingRules.welcome_message_rules) === null || _a === void 0 ? void 0 : _a.length) { + for (const rule of existingRules.welcome_message_rules) { + await this.deleteWelcomeDmRule(rule.id); + if (deleteAssociatedWelcomeDmWhenDeletingRule) { + await this.deleteWelcomeDm(rule.welcome_message_id); + } + } + } + return this.newWelcomeDmRule(welcomeMessageId); + } + // Part: Read indicator + /** + * Marks a message as read in the recipient’s Direct Message conversation view with the sender. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-read-receipt + */ + markDmAsRead(lastEventId, recipientId) { + return this.post('direct_messages/mark_read.json', { + last_read_event_id: lastEventId, + recipient_id: recipientId, + }, { forceBodyMode: 'url' }); + } + /** + * Displays a visual typing indicator in the recipient’s Direct Message conversation view with the sender. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-typing-indicator + */ + indicateDmTyping(recipientId) { + return this.post('direct_messages/indicate_typing.json', { + recipient_id: recipientId, + }, { forceBodyMode: 'url' }); + } + // Part: Images + /** + * Get a single image attached to a direct message. TwitterApi client must be logged with OAuth 1.0a. + * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/message-attachments/guides/retrieving-media + */ + async downloadDmImage(urlOrDm) { + if (typeof urlOrDm !== 'string') { + const attachment = urlOrDm[types_1.EDirectMessageEventTypeV1.Create].message_data.attachment; + if (!attachment) { + throw new Error('The given direct message doesn\'t contain any attachment'); + } + urlOrDm = attachment.media_url_https; + } + const data = await this.get(urlOrDm, undefined, { forceParseMode: 'buffer', prefix: '' }); + if (!data.length) { + throw new Error('Image not found. Make sure you are logged with credentials able to access direct messages, and check the URL.'); + } + return data; + } +} +exports.TwitterApiv1 = TwitterApiv1; +exports["default"] = TwitterApiv1; + + +/***/ }), + +/***/ 4273: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); +const globals_1 = __nccwpck_require__(3444); +const helpers_1 = __nccwpck_require__(1120); +const client_v1_1 = __importDefault(__nccwpck_require__(7030)); +const tweet_paginator_v1_1 = __nccwpck_require__(9848); +const mutes_paginator_v1_1 = __nccwpck_require__(7277); +const user_paginator_v1_1 = __nccwpck_require__(8985); +const list_paginator_v1_1 = __nccwpck_require__(5631); +/** + * Base Twitter v1 client with only read right. + */ +class TwitterApiv1ReadOnly extends client_subclient_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V1_1_PREFIX; + } + /* Tweets */ + /** + * Returns a single Tweet, specified by the id parameter. The Tweet's author will also be embedded within the Tweet. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-show-id + */ + singleTweet(tweetId, options = {}) { + return this.get('statuses/show.json', { tweet_mode: 'extended', id: tweetId, ...options }); + } + tweets(ids, options = {}) { + return this.post('statuses/lookup.json', { tweet_mode: 'extended', id: ids, ...options }); + } + /** + * Returns a single Tweet, specified by either a Tweet web URL or the Tweet ID, in an oEmbed-compatible format. + * The returned HTML snippet will be automatically recognized as an Embedded Tweet when Twitter's widget JavaScript is included on the page. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-oembed + */ + oembedTweet(tweetId, options = {}) { + return this.get('oembed', { + url: `https://twitter.com/i/statuses/${tweetId}`, + ...options, + }, { prefix: 'https://publish.twitter.com/' }); + } + /* Tweets timelines */ + /** + * Returns a collection of the most recent Tweets and Retweets posted by the authenticating user and the users they follow. + * The home timeline is central to how most users interact with the Twitter service. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-home_timeline + */ + async homeTimeline(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('statuses/home_timeline.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.HomeTimelineV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns the 20 most recent mentions (Tweets containing a users's @screen_name) for the authenticating user. + * The timeline returned is the equivalent of the one seen when you view your mentions on twitter.com. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-mentions_timeline + */ + async mentionTimeline(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('statuses/mentions_timeline.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.MentionTimelineV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns a collection of the most recent Tweets posted by the user indicated by the user_id parameters. + * User timelines belonging to protected users may only be requested when the authenticated user either "owns" the timeline or is an approved follower of the owner. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline + */ + async userTimeline(userId, options = {}) { + const queryParams = { + tweet_mode: 'extended', + user_id: userId, + ...options, + }; + const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.UserTimelineV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns a collection of the most recent Tweets posted by the user indicated by the screen_name parameters. + * User timelines belonging to protected users may only be requested when the authenticated user either "owns" the timeline or is an approved follower of the owner. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline + */ + async userTimelineByUsername(username, options = {}) { + const queryParams = { + tweet_mode: 'extended', + screen_name: username, + ...options, + }; + const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.UserTimelineV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default. + * Note: favorites are now known as likes. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list + */ + async favoriteTimeline(userId, options = {}) { + const queryParams = { + tweet_mode: 'extended', + user_id: userId, + ...options, + }; + const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.UserFavoritesV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default. + * Note: favorites are now known as likes. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list + */ + async favoriteTimelineByUsername(username, options = {}) { + const queryParams = { + tweet_mode: 'extended', + screen_name: username, + ...options, + }; + const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.UserFavoritesV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /* Users */ + /** + * Returns a variety of information about the user specified by the required user_id or screen_name parameter. + * The author's most recent Tweet will be returned inline when possible. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-show + */ + user(user) { + return this.get('users/show.json', { tweet_mode: 'extended', ...user }); + } + /** + * Returns fully-hydrated user objects for up to 100 users per request, + * as specified by comma-separated values passed to the user_id and/or screen_name parameters. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-lookup + */ + users(query) { + return this.get('users/lookup.json', { tweet_mode: 'extended', ...query }); + } + /** + * Returns an HTTP 200 OK response code and a representation of the requesting user if authentication was successful; + * returns a 401 status code and an error message if not. + * Use this method to test if supplied user credentials are valid. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials + */ + verifyCredentials(options = {}) { + return this.get('account/verify_credentials.json', options); + } + /** + * Returns an array of user objects the authenticating user has muted. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-list + */ + async listMutedUsers(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('mutes/users/list.json', queryParams, { fullResponse: true }); + return new mutes_paginator_v1_1.MuteUserListV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns an array of numeric user ids the authenticating user has muted. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-ids + */ + async listMutedUserIds(options = {}) { + const queryParams = { + stringify_ids: true, + ...options, + }; + const initialRq = await this.get('mutes/users/ids.json', queryParams, { fullResponse: true }); + return new mutes_paginator_v1_1.MuteUserIdsV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Provides a simple, relevance-based search interface to public user accounts on Twitter. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-search + */ + async searchUsers(query, options = {}) { + const queryParams = { + q: query, + tweet_mode: 'extended', + page: 1, + ...options, + }; + const initialRq = await this.get('users/search.json', queryParams, { fullResponse: true }); + return new user_paginator_v1_1.UserSearchV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /* Friendship API */ + /** + * Returns detailed information about the relationship between two arbitrary users. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-show + */ + friendship(sources) { + return this.get('friendships/show.json', sources); + } + /** + * Returns the relationships of the authenticating user to the comma-separated list of up to 100 screen_names or user_ids provided. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-lookup + */ + friendships(friendships) { + return this.get('friendships/lookup.json', friendships); + } + /** + * Returns a collection of user_ids that the currently authenticated user does not want to receive retweets from. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-no_retweets-ids + */ + friendshipsNoRetweets() { + return this.get('friendships/no_retweets/ids.json', { stringify_ids: true }); + } + /** + * Returns a collection of numeric IDs for every user who has a pending request to follow the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-incoming + */ + async friendshipsIncoming(options = {}) { + const queryParams = { + stringify_ids: true, + ...options, + }; + const initialRq = await this.get('friendships/incoming.json', queryParams, { fullResponse: true }); + return new user_paginator_v1_1.FriendshipsIncomingV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns a collection of numeric IDs for every protected user for whom the authenticating user has a pending follow request. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-outgoing + */ + async friendshipsOutgoing(options = {}) { + const queryParams = { + stringify_ids: true, + ...options, + }; + const initialRq = await this.get('friendships/outgoing.json', queryParams, { fullResponse: true }); + return new user_paginator_v1_1.FriendshipsOutgoingV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /* Account/user API */ + /** + * Get current account settings for authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings + */ + accountSettings() { + return this.get('account/settings.json'); + } + /** + * Returns a map of the available size variations of the specified user's profile banner. + * If the user has not uploaded a profile banner, a HTTP 404 will be served instead. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-users-profile_banner + */ + userProfileBannerSizes(params) { + return this.get('users/profile_banner.json', params); + } + /* Lists */ + /** + * Returns the specified list. Private lists will only be shown if the authenticated user owns the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-show + */ + list(options) { + return this.get('lists/show.json', { tweet_mode: 'extended', ...options }); + } + /** + * Returns all lists the authenticating or specified user subscribes to, including their own. + * If no user is given, the authenticating user is used. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-list + */ + lists(options = {}) { + return this.get('lists/list.json', { tweet_mode: 'extended', ...options }); + } + /** + * Returns the members of the specified list. Private list members will only be shown if the authenticated user owns the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members + */ + async listMembers(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/members.json', queryParams, { fullResponse: true }); + return new list_paginator_v1_1.ListMembersV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Check if the specified user is a member of the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members-show + */ + listGetMember(options) { + return this.get('lists/members/show.json', { tweet_mode: 'extended', ...options }); + } + /** + * Returns the lists the specified user has been added to. + * If user_id or screen_name are not provided, the memberships for the authenticating user are returned. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-memberships + */ + async listMemberships(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/memberships.json', queryParams, { fullResponse: true }); + return new list_paginator_v1_1.ListMembershipsV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns the lists owned by the specified Twitter user. Private lists will only be shown if the authenticated user is also the owner of the lists. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships + */ + async listOwnerships(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/ownerships.json', queryParams, { fullResponse: true }); + return new list_paginator_v1_1.ListOwnershipsV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns a timeline of tweets authored by members of the specified list. Retweets are included by default. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-statuses + */ + async listStatuses(options) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/statuses.json', queryParams, { fullResponse: true }); + return new tweet_paginator_v1_1.ListTimelineV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns the subscribers of the specified list. Private list subscribers will only be shown if the authenticated user owns the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers + */ + async listSubscribers(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/subscribers.json', queryParams, { fullResponse: true }); + return new list_paginator_v1_1.ListSubscribersV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Check if the specified user is a subscriber of the specified list. Returns the user if they are a subscriber. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers-show + */ + listGetSubscriber(options) { + return this.get('lists/subscribers/show.json', { tweet_mode: 'extended', ...options }); + } + /** + * Obtain a collection of the lists the specified user is subscribed to, 20 lists per page by default. + * Does not include the user's own lists. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscriptions + */ + async listSubscriptions(options = {}) { + const queryParams = { + tweet_mode: 'extended', + ...options, + }; + const initialRq = await this.get('lists/subscriptions.json', queryParams, { fullResponse: true }); + return new list_paginator_v1_1.ListSubscriptionsV1Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /* Media upload API */ + /** + * The STATUS command (this method) is used to periodically poll for updates of media processing operation. + * After the STATUS command response returns succeeded, you can move on to the next step which is usually create Tweet with media_id. + * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/get-media-upload-status + */ + mediaInfo(mediaId) { + return this.get('media/upload.json', { + command: 'STATUS', + media_id: mediaId, + }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); + } + filterStream({ autoConnect, ...params } = {}) { + const parameters = {}; + for (const [key, value] of Object.entries(params)) { + if (key === 'follow' || key === 'track') { + parameters[key] = value.toString(); + } + else if (key === 'locations') { + const locations = value; + parameters.locations = (0, helpers_1.arrayWrap)(locations).map(loc => `${loc.lng},${loc.lat}`).join(','); + } + else { + parameters[key] = value; + } + } + const streamClient = this.stream; + return streamClient.postStream('statuses/filter.json', parameters, { autoConnect }); + } + sampleStream({ autoConnect, ...params } = {}) { + const streamClient = this.stream; + return streamClient.getStream('statuses/sample.json', params, { autoConnect }); + } + /** + * Create a client that is prefixed with `https//stream.twitter.com` instead of classic API URL. + */ + get stream() { + const copiedClient = new client_v1_1.default(this); + copiedClient.setPrefix(globals_1.API_V1_1_STREAM_PREFIX); + return copiedClient; + } + /* Trends API */ + /** + * Returns the top 50 trending topics for a specific id, if trending information is available for it. + * Note: The id parameter for this endpoint is the "where on earth identifier" or WOEID, which is a legacy identifier created by Yahoo and has been deprecated. + * https://developer.twitter.com/en/docs/twitter-api/v1/trends/trends-for-location/api-reference/get-trends-place + */ + trendsByPlace(woeId, options = {}) { + return this.get('trends/place.json', { id: woeId, ...options }); + } + /** + * Returns the locations that Twitter has trending topic information for. + * The response is an array of "locations" that encode the location's WOEID + * and some other human-readable information such as a canonical name and country the location belongs in. + * https://developer.twitter.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-available + */ + trendsAvailable() { + return this.get('trends/available.json'); + } + /** + * Returns the locations that Twitter has trending topic information for, closest to a specified location. + * https://developer.twitter.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-closest + */ + trendsClosest(lat, long) { + return this.get('trends/closest.json', { lat, long }); + } + /* Geo API */ + /** + * Returns all the information about a known place. + * https://developer.twitter.com/en/docs/twitter-api/v1/geo/place-information/api-reference/get-geo-id-place_id + */ + geoPlace(placeId) { + return this.get('geo/id/:place_id.json', undefined, { params: { place_id: placeId } }); + } + /** + * Search for places that can be attached to a Tweet via POST statuses/update. + * This request will return a list of all the valid places that can be used as the place_id when updating a status. + * https://developer.twitter.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-search + */ + geoSearch(options) { + return this.get('geo/search.json', options); + } + /** + * Given a latitude and a longitude, searches for up to 20 places that can be used as a place_id when updating a status. + * This request is an informative call and will deliver generalized results about geography. + * https://developer.twitter.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-reverse_geocode + */ + geoReverseGeoCode(options) { + return this.get('geo/reverse_geocode.json', options); + } + /* Developer utilities */ + /** + * Returns the current rate limits for methods belonging to the specified resource families. + * Each API resource belongs to a "resource family" which is indicated in its method documentation. + * The method's resource family can be determined from the first component of the path after the resource version. + * https://developer.twitter.com/en/docs/twitter-api/v1/developer-utilities/rate-limit-status/api-reference/get-application-rate_limit_status + */ + rateLimitStatuses(...resources) { + return this.get('application/rate_limit_status.json', { resources }); + } + /** + * Returns the list of languages supported by Twitter along with the language code supported by Twitter. + * https://developer.twitter.com/en/docs/twitter-api/v1/developer-utilities/supported-languages/api-reference/get-help-languages + */ + supportedLanguages() { + return this.get('help/languages.json'); + } +} +exports["default"] = TwitterApiv1ReadOnly; + + +/***/ }), + +/***/ 6685: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const globals_1 = __nccwpck_require__(3444); +const client_v1_read_1 = __importDefault(__nccwpck_require__(4273)); +const types_1 = __nccwpck_require__(1638); +const fs = __importStar(__nccwpck_require__(7147)); +const media_helpers_v1_1 = __nccwpck_require__(8738); +const helpers_1 = __nccwpck_require__(1120); +const UPLOAD_ENDPOINT = 'media/upload.json'; +/** + * Base Twitter v1 client with read/write rights. + */ +class TwitterApiv1ReadWrite extends client_v1_read_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V1_1_PREFIX; + } + /** + * Get a client with only read rights. + */ + get readOnly() { + return this; + } + /* Tweet API */ + /** + * Post a new tweet. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update + */ + tweet(status, payload = {}) { + const queryParams = { + status, + tweet_mode: 'extended', + ...payload, + }; + return this.post('statuses/update.json', queryParams); + } + /** + * Quote an existing tweet. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update + */ + async quote(status, quotingStatusId, payload = {}) { + const url = 'https://twitter.com/i/statuses/' + quotingStatusId; + return this.tweet(status, { ...payload, attachment_url: url }); + } + /** + * Post a series of tweets. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update + */ + async tweetThread(tweets) { + const postedTweets = []; + for (const tweet of tweets) { + // Retrieve the last sent tweet + const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null; + // Build the tweet query params + const queryParams = { ...(typeof tweet === 'string' ? ({ status: tweet }) : tweet) }; + // Reply to an existing tweet if needed + const inReplyToId = lastTweet ? lastTweet.id_str : queryParams.in_reply_to_status_id; + const status = queryParams.status; + if (inReplyToId) { + postedTweets.push(await this.reply(status, inReplyToId, queryParams)); + } + else { + postedTweets.push(await this.tweet(status, queryParams)); + } + } + return postedTweets; + } + /** + * Reply to an existing tweet. Shortcut to `.tweet` with tweaked parameters. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update + */ + reply(status, in_reply_to_status_id, payload = {}) { + return this.tweet(status, { + auto_populate_reply_metadata: true, + in_reply_to_status_id, + ...payload, + }); + } + /** + * Delete an existing tweet belonging to you. + * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-destroy-id + */ + deleteTweet(tweetId) { + return this.post('statuses/destroy/:id.json', { tweet_mode: 'extended' }, { params: { id: tweetId } }); + } + /* User API */ + /** + * Report the specified user as a spam account to Twitter. + * Additionally, optionally performs the equivalent of POST blocks/create on behalf of the authenticated user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/post-users-report_spam + */ + reportUserAsSpam(options) { + return this.post('users/report_spam.json', { tweet_mode: 'extended', ...options }); + } + /** + * Turn on/off Retweets and device notifications from the specified user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-update + */ + updateFriendship(options) { + return this.post('friendships/update.json', options); + } + /** + * Follow the specified user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-create + */ + createFriendship(options) { + return this.post('friendships/create.json', options); + } + /** + * Unfollow the specified user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-destroy + */ + destroyFriendship(options) { + return this.post('friendships/destroy.json', options); + } + /* Account API */ + /** + * Update current account settings for authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings + */ + updateAccountSettings(options) { + return this.post('account/settings.json', options); + } + /** + * Sets some values that users are able to set under the "Account" tab of their settings page. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile + */ + updateAccountProfile(options) { + return this.post('account/update_profile.json', options); + } + /** + * Uploads a profile banner on behalf of the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_banner + */ + async updateAccountProfileBanner(file, options = {}) { + const queryParams = { + banner: await (0, media_helpers_v1_1.readFileIntoBuffer)(file), + ...options, + }; + return this.post('account/update_profile_banner.json', queryParams, { forceBodyMode: 'form-data' }); + } + /** + * Updates the authenticating user's profile image. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image + */ + async updateAccountProfileImage(file, options = {}) { + const queryParams = { + tweet_mode: 'extended', + image: await (0, media_helpers_v1_1.readFileIntoBuffer)(file), + ...options, + }; + return this.post('account/update_profile_image.json', queryParams, { forceBodyMode: 'form-data' }); + } + /** + * Removes the uploaded profile banner for the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-remove_profile_banner + */ + removeAccountProfileBanner() { + return this.post('account/remove_profile_banner.json'); + } + /* Lists */ + /** + * Creates a new list for the authenticated user. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-create + */ + createList(options) { + return this.post('lists/create.json', { tweet_mode: 'extended', ...options }); + } + /** + * Updates the specified list. The authenticated user must own the list to be able to update it. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-update + */ + updateList(options) { + return this.post('lists/update.json', { tweet_mode: 'extended', ...options }); + } + /** + * Deletes the specified list. The authenticated user must own the list to be able to destroy it. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy + */ + removeList(options) { + return this.post('lists/destroy.json', { tweet_mode: 'extended', ...options }); + } + /** + * Adds multiple members to a list, by specifying a comma-separated list of member ids or screen names. + * If you add a single `user_id` or `screen_name`, it will target `lists/members/create.json`, otherwise + * it will target `lists/members/create_all.json`. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-create_all + */ + addListMembers(options) { + const hasMultiple = (options.user_id && (0, helpers_1.hasMultipleItems)(options.user_id)) || (options.screen_name && (0, helpers_1.hasMultipleItems)(options.screen_name)); + const endpoint = hasMultiple ? 'lists/members/create_all.json' : 'lists/members/create.json'; + return this.post(endpoint, options); + } + /** + * Removes multiple members to a list, by specifying a comma-separated list of member ids or screen names. + * If you add a single `user_id` or `screen_name`, it will target `lists/members/destroy.json`, otherwise + * it will target `lists/members/destroy_all.json`. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-destroy_all + */ + removeListMembers(options) { + const hasMultiple = (options.user_id && (0, helpers_1.hasMultipleItems)(options.user_id)) || (options.screen_name && (0, helpers_1.hasMultipleItems)(options.screen_name)); + const endpoint = hasMultiple ? 'lists/members/destroy_all.json' : 'lists/members/destroy.json'; + return this.post(endpoint, options); + } + /** + * Subscribes the authenticated user to the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-create + */ + subscribeToList(options) { + return this.post('lists/subscribers/create.json', { tweet_mode: 'extended', ...options }); + } + /** + * Unsubscribes the authenticated user of the specified list. + * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-destroy + */ + unsubscribeOfList(options) { + return this.post('lists/subscribers/destroy.json', { tweet_mode: 'extended', ...options }); + } + /* Media upload API */ + /** + * This endpoint can be used to provide additional information about the uploaded media_id. + * This feature is currently only supported for images and GIFs. + * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-metadata-create + */ + createMediaMetadata(mediaId, metadata) { + return this.post('media/metadata/create.json', { media_id: mediaId, ...metadata }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); + } + /** + * Use this endpoint to associate uploaded subtitles to an uploaded video. You can associate subtitles to video before or after Tweeting. + * **To obtain subtitle media ID, you must upload each subtitle file separately using `.uploadMedia()` method.** + * + * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-create + */ + createMediaSubtitles(mediaId, subtitles) { + return this.post('media/subtitles/create.json', { media_id: mediaId, media_category: 'TweetVideo', subtitle_info: { subtitles } }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); + } + /** + * Use this endpoint to dissociate subtitles from a video and delete the subtitles. You can dissociate subtitles from a video before or after Tweeting. + * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-delete + */ + deleteMediaSubtitles(mediaId, ...languages) { + return this.post('media/subtitles/delete.json', { + media_id: mediaId, + media_category: 'TweetVideo', + subtitle_info: { subtitles: languages.map(lang => ({ language_code: lang })) }, + }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); + } + /** + * Upload a media (JPG/PNG/GIF/MP4/WEBP) or subtitle (SRT) to Twitter and return the media_id to use in tweet/DM send. + * + * @param file If `string`, filename is supposed. + * A `Buffer` is a raw file. + * `fs.promises.FileHandle` or `number` are file pointers. + * + * @param options.type File type (Enum 'jpg' | 'longmp4' | 'mp4' | 'png' | 'gif' | 'srt' | 'webp'). + * If filename is given, it could be guessed with file extension, otherwise this parameter is mandatory. + * If type is not part of the enum, it will be used as mime type. + * + * Type `longmp4` is **required** is you try to upload a video higher than 140 seconds. + * + * @param options.chunkLength Maximum chunk length sent to Twitter. Default goes to 1 MB. + * + * @param options.additionalOwners Other user IDs allowed to use the returned media_id. Default goes to none. + * + * @param options.maxConcurrentUploads Maximum uploaded chunks in the same time. Default goes to 3. + * + * @param options.target Target type `tweet` or `dm`. Defaults to `tweet`. + * You must specify it if you send a media to use in DMs. + */ + async uploadMedia(file, options = {}) { + var _a; + const chunkLength = (_a = options.chunkLength) !== null && _a !== void 0 ? _a : (1024 * 1024); + const { fileHandle, mediaCategory, fileSize, mimeType } = await this.getUploadMediaRequirements(file, options); + // Get the file handle (if not buffer) + try { + // Finally! We can send INIT message. + const mediaData = await this.post(UPLOAD_ENDPOINT, { + command: 'INIT', + total_bytes: fileSize, + media_type: mimeType, + media_category: mediaCategory, + additional_owners: options.additionalOwners, + shared: options.shared ? true : undefined, + }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); + // Upload the media chunk by chunk + await this.mediaChunkedUpload(fileHandle, chunkLength, mediaData.media_id_string, options.maxConcurrentUploads); + // Finalize media + const fullMediaData = await this.post(UPLOAD_ENDPOINT, { + command: 'FINALIZE', + media_id: mediaData.media_id_string, + }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); + if (fullMediaData.processing_info && fullMediaData.processing_info.state !== 'succeeded') { + // Must wait if video is still computed + await this.awaitForMediaProcessingCompletion(fullMediaData); + } + // Video is ready, return media_id + return fullMediaData.media_id_string; + } + finally { + // Close file if any + if (typeof file === 'number') { + // eslint-disable-next-line @typescript-eslint/no-empty-function + fs.close(file, () => { }); + } + else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) { + fileHandle.close(); + } + } + } + async awaitForMediaProcessingCompletion(fullMediaData) { + // eslint-disable-next-line no-constant-condition + while (true) { + fullMediaData = await this.mediaInfo(fullMediaData.media_id_string); + const { processing_info } = fullMediaData; + if (!processing_info || processing_info.state === 'succeeded') { + // Ok, completed! + return; + } + if (processing_info.state === 'failed') { + if (processing_info.error) { + const { name, message } = processing_info.error; + throw new Error(`Failed to process media: ${name} - ${message}.`); + } + throw new Error('Failed to process the media.'); + } + if (processing_info.check_after_secs) { + // Await for given seconds + await (0, media_helpers_v1_1.sleepSecs)(processing_info.check_after_secs); + } + else { + // No info; Await for 5 seconds + await (0, media_helpers_v1_1.sleepSecs)(5); + } + } + } + async getUploadMediaRequirements(file, { mimeType, type, target, longVideo } = {}) { + // Get the file handle (if not buffer) + let fileHandle; + try { + fileHandle = await (0, media_helpers_v1_1.getFileHandle)(file); + // Get the mimetype + const realMimeType = (0, media_helpers_v1_1.getMimeType)(file, type, mimeType); + // Get the media category + let mediaCategory; + // If explicit longmp4 OR explicit MIME type and not DM target + if (realMimeType === types_1.EUploadMimeType.Mp4 && ((!mimeType && !type && target !== 'dm') || longVideo)) { + mediaCategory = 'amplify_video'; + } + else { + mediaCategory = (0, media_helpers_v1_1.getMediaCategoryByMime)(realMimeType, target !== null && target !== void 0 ? target : 'tweet'); + } + return { + fileHandle, + mediaCategory, + fileSize: await (0, media_helpers_v1_1.getFileSizeFromFileHandle)(fileHandle), + mimeType: realMimeType, + }; + } + catch (e) { + // Close file if any + if (typeof file === 'number') { + // eslint-disable-next-line @typescript-eslint/no-empty-function + fs.close(file, () => { }); + } + else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) { + fileHandle.close(); + } + throw e; + } + } + async mediaChunkedUpload(fileHandle, chunkLength, mediaId, maxConcurrentUploads = 3) { + // Send chunk by chunk + let chunkIndex = 0; + if (maxConcurrentUploads < 1) { + throw new RangeError('Bad maxConcurrentUploads parameter.'); + } + // Creating a buffer for doing file stuff (if we don't have one) + const buffer = fileHandle instanceof Buffer ? undefined : Buffer.alloc(chunkLength); + // Sliced/filled buffer returned for each part + let readBuffer; + // Needed to know when we should stop reading the file + let nread; + // Needed to use the buffer object (file handles always "remembers" file position) + let offset = 0; + [readBuffer, nread] = await (0, media_helpers_v1_1.readNextPartOf)(fileHandle, chunkLength, offset, buffer); + offset += nread; + // Handle max concurrent uploads + const currentUploads = new Set(); + // Read buffer until file is completely read + while (nread) { + const mediaBufferPart = readBuffer.slice(0, nread); + // Sent part if part has something inside + if (mediaBufferPart.length) { + const request = this.post(UPLOAD_ENDPOINT, { + command: 'APPEND', + media_id: mediaId, + segment_index: chunkIndex, + media: mediaBufferPart, + }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); + currentUploads.add(request); + request.then(() => { + currentUploads.delete(request); + }); + chunkIndex++; + } + if (currentUploads.size >= maxConcurrentUploads) { + // Await for first promise to be finished + await Promise.race(currentUploads); + } + [readBuffer, nread] = await (0, media_helpers_v1_1.readNextPartOf)(fileHandle, chunkLength, offset, buffer); + offset += nread; + } + await Promise.all([...currentUploads]); + } +} +exports["default"] = TwitterApiv1ReadWrite; + + +/***/ }), + +/***/ 8738: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.readNextPartOf = exports.sleepSecs = exports.getMediaCategoryByMime = exports.getMimeType = exports.getFileSizeFromFileHandle = exports.getFileHandle = exports.readFileIntoBuffer = void 0; +const fs = __importStar(__nccwpck_require__(7147)); +const helpers_1 = __nccwpck_require__(1120); +const types_1 = __nccwpck_require__(1638); +async function readFileIntoBuffer(file) { + const handle = await getFileHandle(file); + if (typeof handle === 'number') { + return new Promise((resolve, reject) => { + fs.readFile(handle, (err, data) => { + if (err) { + return reject(err); + } + resolve(data); + }); + }); + } + else if (handle instanceof Buffer) { + return handle; + } + else { + return handle.readFile(); + } +} +exports.readFileIntoBuffer = readFileIntoBuffer; +function getFileHandle(file) { + if (typeof file === 'string') { + return fs.promises.open(file, 'r'); + } + else if (typeof file === 'number') { + return file; + } + else if (typeof file === 'object' && !(file instanceof Buffer)) { + return file; + } + else if (!(file instanceof Buffer)) { + throw new Error('Given file is not valid, please check its type.'); + } + else { + return file; + } +} +exports.getFileHandle = getFileHandle; +async function getFileSizeFromFileHandle(fileHandle) { + // Get the file size + if (typeof fileHandle === 'number') { + const stats = await new Promise((resolve, reject) => { + fs.fstat(fileHandle, (err, stats) => { + if (err) + reject(err); + resolve(stats); + }); + }); + return stats.size; + } + else if (fileHandle instanceof Buffer) { + return fileHandle.length; + } + else { + return (await fileHandle.stat()).size; + } +} +exports.getFileSizeFromFileHandle = getFileSizeFromFileHandle; +function getMimeType(file, type, mimeType) { + if (typeof mimeType === 'string') { + return mimeType; + } + else if (typeof file === 'string' && !type) { + return getMimeByName(file); + } + else if (typeof type === 'string') { + return getMimeByType(type); + } + throw new Error('You must specify type if file is a file handle or Buffer.'); +} +exports.getMimeType = getMimeType; +function getMimeByName(name) { + if (name.endsWith('.jpeg') || name.endsWith('.jpg')) + return types_1.EUploadMimeType.Jpeg; + if (name.endsWith('.png')) + return types_1.EUploadMimeType.Png; + if (name.endsWith('.webp')) + return types_1.EUploadMimeType.Webp; + if (name.endsWith('.gif')) + return types_1.EUploadMimeType.Gif; + if (name.endsWith('.mpeg4') || name.endsWith('.mp4')) + return types_1.EUploadMimeType.Mp4; + if (name.endsWith('.srt')) + return types_1.EUploadMimeType.Srt; + (0, helpers_1.safeDeprecationWarning)({ + instance: 'TwitterApiv1ReadWrite', + method: 'uploadMedia', + problem: `options.mimeType is missing and filename couldn't help to resolve MIME type, so it will fallback to image/jpeg`, + resolution: `If you except to give filenames without extensions, please specify explicitlty the MIME type using options.mimeType`, + }); + return types_1.EUploadMimeType.Jpeg; +} +function getMimeByType(type) { + (0, helpers_1.safeDeprecationWarning)({ + instance: 'TwitterApiv1ReadWrite', + method: 'uploadMedia', + problem: `you're using options.type`, + resolution: `Remove options.type argument and migrate to options.mimeType which takes the real MIME type. ` + + `If you're using type=longmp4, add options.longVideo alongside of mimeType=EUploadMimeType.Mp4`, + }); + if (type === 'gif') + return types_1.EUploadMimeType.Gif; + if (type === 'jpg') + return types_1.EUploadMimeType.Jpeg; + if (type === 'png') + return types_1.EUploadMimeType.Png; + if (type === 'webp') + return types_1.EUploadMimeType.Webp; + if (type === 'srt') + return types_1.EUploadMimeType.Srt; + if (type === 'mp4' || type === 'longmp4') + return types_1.EUploadMimeType.Mp4; + return type; +} +function getMediaCategoryByMime(name, target) { + if (name === types_1.EUploadMimeType.Mp4) + return target === 'tweet' ? 'TweetVideo' : 'DmVideo'; + if (name === types_1.EUploadMimeType.Gif) + return target === 'tweet' ? 'TweetGif' : 'DmGif'; + if (name === types_1.EUploadMimeType.Srt) + return 'Subtitles'; + else + return target === 'tweet' ? 'TweetImage' : 'DmImage'; +} +exports.getMediaCategoryByMime = getMediaCategoryByMime; +function sleepSecs(seconds) { + return new Promise(resolve => setTimeout(resolve, seconds * 1000)); +} +exports.sleepSecs = sleepSecs; +async function readNextPartOf(file, chunkLength, bufferOffset = 0, buffer) { + if (file instanceof Buffer) { + const rt = file.slice(bufferOffset, bufferOffset + chunkLength); + return [rt, rt.length]; + } + if (!buffer) { + throw new Error('Well, we will need a buffer to store file content.'); + } + let bytesRead; + if (typeof file === 'number') { + bytesRead = await new Promise((resolve, reject) => { + fs.read(file, buffer, 0, chunkLength, bufferOffset, (err, nread) => { + if (err) + reject(err); + resolve(nread); + }); + }); + } + else { + const res = await file.read(buffer, 0, chunkLength, bufferOffset); + bytesRead = res.bytesRead; + } + return [buffer, bytesRead]; +} +exports.readNextPartOf = readNextPartOf; + + +/***/ }), + +/***/ 1204: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiv2Labs = void 0; +const globals_1 = __nccwpck_require__(3444); +const client_v2_labs_write_1 = __importDefault(__nccwpck_require__(8191)); +/** + * Twitter v2 labs client with all rights (read/write/DMs) + */ +class TwitterApiv2Labs extends client_v2_labs_write_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_LABS_PREFIX; + } + /** + * Get a client with read/write rights. + */ + get readWrite() { + return this; + } +} +exports.TwitterApiv2Labs = TwitterApiv2Labs; +exports["default"] = TwitterApiv2Labs; + + +/***/ }), + +/***/ 5248: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); +const globals_1 = __nccwpck_require__(3444); +/** + * Base Twitter v2 labs client with only read right. + */ +class TwitterApiv2LabsReadOnly extends client_subclient_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_LABS_PREFIX; + } +} +exports["default"] = TwitterApiv2LabsReadOnly; + + +/***/ }), + +/***/ 8191: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const globals_1 = __nccwpck_require__(3444); +const client_v2_labs_read_1 = __importDefault(__nccwpck_require__(5248)); +/** + * Base Twitter v2 labs client with read/write rights. + */ +class TwitterApiv2LabsReadWrite extends client_v2_labs_read_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_LABS_PREFIX; + } + /** + * Get a client with only read rights. + */ + get readOnly() { + return this; + } +} +exports["default"] = TwitterApiv2LabsReadWrite; + + +/***/ }), + +/***/ 4692: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterApiv2 = void 0; +const globals_1 = __nccwpck_require__(3444); +const client_v2_write_1 = __importDefault(__nccwpck_require__(5587)); +const client_v2_labs_1 = __importDefault(__nccwpck_require__(1204)); +/** + * Twitter v2 client with all rights (read/write/DMs) + */ +class TwitterApiv2 extends client_v2_write_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_PREFIX; + } + /* Sub-clients */ + /** + * Get a client with read/write rights. + */ + get readWrite() { + return this; + } + /** + * Get a client for v2 labs endpoints. + */ + get labs() { + if (this._labs) + return this._labs; + return this._labs = new client_v2_labs_1.default(this); + } +} +exports.TwitterApiv2 = TwitterApiv2; +exports["default"] = TwitterApiv2; + + +/***/ }), + +/***/ 7318: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); +const globals_1 = __nccwpck_require__(3444); +const paginators_1 = __nccwpck_require__(5814); +const client_v2_labs_read_1 = __importDefault(__nccwpck_require__(5248)); +const user_paginator_v2_1 = __nccwpck_require__(2178); +const helpers_1 = __nccwpck_require__(1120); +/** + * Base Twitter v2 client with only read right. + */ +class TwitterApiv2ReadOnly extends client_subclient_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_PREFIX; + } + /* Sub-clients */ + /** + * Get a client for v2 labs endpoints. + */ + get labs() { + if (this._labs) + return this._labs; + return this._labs = new client_v2_labs_read_1.default(this); + } + async search(queryOrOptions, options = {}) { + const query = typeof queryOrOptions === 'string' ? queryOrOptions : undefined; + const realOptions = typeof queryOrOptions === 'object' && queryOrOptions !== null ? queryOrOptions : options; + const queryParams = { ...realOptions, query }; + const initialRq = await this.get('tweets/search/recent', queryParams, { fullResponse: true }); + return new paginators_1.TweetSearchRecentV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * The full-archive search endpoint returns the complete history of public Tweets matching a search query; + * since the first Tweet was created March 26, 2006. + * + * This endpoint is only available to those users who have been approved for the Academic Research product track. + * https://developer.twitter.com/en/docs/twitter-api/tweets/search/api-reference/get-tweets-search-all + */ + async searchAll(query, options = {}) { + const queryParams = { ...options, query }; + const initialRq = await this.get('tweets/search/all', queryParams, { fullResponse: true }); + return new paginators_1.TweetSearchAllV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams, + }); + } + /** + * Returns a variety of information about a single Tweet specified by the requested ID. + * https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets-id + * + * OAuth2 scope: `users.read`, `tweet.read` + */ + singleTweet(tweetId, options = {}) { + return this.get('tweets/:id', options, { params: { id: tweetId } }); + } + /** + * Returns a variety of information about tweets specified by list of IDs. + * https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets + * + * OAuth2 scope: `users.read`, `tweet.read` + */ + tweets(tweetIds, options = {}) { + return this.get('tweets', { ids: tweetIds, ...options }); + } + /** + * The recent Tweet counts endpoint returns count of Tweets from the last seven days that match a search query. + * OAuth2 Bearer auth only. + * https://developer.twitter.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-recent + */ + tweetCountRecent(query, options = {}) { + return this.get('tweets/counts/recent', { query, ...options }); + } + /** + * This endpoint is only available to those users who have been approved for the Academic Research product track. + * The full-archive search endpoint returns the complete history of public Tweets matching a search query; + * since the first Tweet was created March 26, 2006. + * OAuth2 Bearer auth only. + * **This endpoint has pagination, yet it is not supported by bundled paginators. Use `next_token` to fetch next page.** + * https://developer.twitter.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-all + */ + tweetCountAll(query, options = {}) { + return this.get('tweets/counts/all', { query, ...options }); + } + async tweetRetweetedBy(tweetId, options = {}) { + const { asPaginator, ...parameters } = options; + const initialRq = await this.get('tweets/:id/retweeted_by', parameters, { + fullResponse: true, + params: { id: tweetId }, + }); + if (!asPaginator) { + return initialRq.data; + } + return new user_paginator_v2_1.TweetRetweetersUsersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: parameters, + sharedParams: { id: tweetId }, + }); + } + async tweetLikedBy(tweetId, options = {}) { + const { asPaginator, ...parameters } = options; + const initialRq = await this.get('tweets/:id/liking_users', parameters, { + fullResponse: true, + params: { id: tweetId }, + }); + if (!asPaginator) { + return initialRq.data; + } + return new user_paginator_v2_1.TweetLikingUsersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: parameters, + sharedParams: { id: tweetId }, + }); + } + /** + * Allows you to retrieve a collection of the most recent Tweets and Retweets posted by you and users you follow, also known as home timeline. + * This endpoint returns up to the last 3200 Tweets. + * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-reverse-chronological + * + * OAuth 2 scopes: `tweet.read` `users.read` + */ + async homeTimeline(options = {}) { + const meUser = await this.getCurrentUserV2Object(); + const initialRq = await this.get('users/:id/timelines/reverse_chronological', options, { + fullResponse: true, + params: { id: meUser.data.id }, + }); + return new paginators_1.TweetHomeTimelineV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: options, + sharedParams: { id: meUser.data.id }, + }); + } + /** + * Returns Tweets composed by a single user, specified by the requested user ID. + * By default, the most recent ten Tweets are returned per request. + * Using pagination, the most recent 3,200 Tweets can be retrieved. + * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-tweets + */ + async userTimeline(userId, options = {}) { + const initialRq = await this.get('users/:id/tweets', options, { + fullResponse: true, + params: { id: userId }, + }); + return new paginators_1.TweetUserTimelineV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: options, + sharedParams: { id: userId }, + }); + } + /** + * Returns Tweets mentioning a single user specified by the requested user ID. + * By default, the most recent ten Tweets are returned per request. + * Using pagination, up to the most recent 800 Tweets can be retrieved. + * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-mentions + */ + async userMentionTimeline(userId, options = {}) { + const initialRq = await this.get('users/:id/mentions', options, { + fullResponse: true, + params: { id: userId }, + }); + return new paginators_1.TweetUserMentionTimelineV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: options, + sharedParams: { id: userId }, + }); + } + /** + * Returns Quote Tweets for a Tweet specified by the requested Tweet ID. + * https://developer.twitter.com/en/docs/twitter-api/tweets/quote-tweets/api-reference/get-tweets-id-quote_tweets + * + * OAuth2 scopes: `users.read` `tweet.read` + */ + async quotes(tweetId, options = {}) { + const initialRq = await this.get('tweets/:id/quote_tweets', options, { + fullResponse: true, + params: { id: tweetId }, + }); + return new paginators_1.QuotedTweetsTimelineV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: options, + sharedParams: { id: tweetId }, + }); + } + /* Bookmarks */ + /** + * Allows you to get information about a authenticated user’s 800 most recent bookmarked Tweets. + * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/get-users-id-bookmarks + * + * OAuth2 scopes: `users.read` `tweet.read` `bookmark.read` + */ + async bookmarks(options = {}) { + const user = await this.getCurrentUserV2Object(); + const initialRq = await this.get('users/:id/bookmarks', options, { + fullResponse: true, + params: { id: user.data.id }, + }); + return new paginators_1.TweetBookmarksTimelineV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: options, + sharedParams: { id: user.data.id }, + }); + } + /* Users */ + /** + * Returns information about an authorized user. + * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-me + * + * OAuth2 scopes: `tweet.read` & `users.read` + */ + me(options = {}) { + return this.get('users/me', options); + } + /** + * Returns a variety of information about a single user specified by the requested ID. + * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-id + */ + user(userId, options = {}) { + return this.get('users/:id', options, { params: { id: userId } }); + } + /** + * Returns a variety of information about one or more users specified by the requested IDs. + * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users + */ + users(userIds, options = {}) { + const ids = Array.isArray(userIds) ? userIds.join(',') : userIds; + return this.get('users', { ...options, ids }); + } + /** + * Returns a variety of information about a single user specified by their username. + * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username + */ + userByUsername(username, options = {}) { + return this.get('users/by/username/:username', options, { params: { username } }); + } + /** + * Returns a variety of information about one or more users specified by their usernames. + * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by + * + * OAuth2 scope: `users.read`, `tweet.read` + */ + usersByUsernames(usernames, options = {}) { + usernames = Array.isArray(usernames) ? usernames.join(',') : usernames; + return this.get('users/by', { ...options, usernames }); + } + async followers(userId, options = {}) { + const { asPaginator, ...parameters } = options; + const params = { id: userId }; + if (!asPaginator) { + return this.get('users/:id/followers', parameters, { params }); + } + const initialRq = await this.get('users/:id/followers', parameters, { fullResponse: true, params }); + return new user_paginator_v2_1.UserFollowersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: parameters, + sharedParams: params, + }); + } + async following(userId, options = {}) { + const { asPaginator, ...parameters } = options; + const params = { id: userId }; + if (!asPaginator) { + return this.get('users/:id/following', parameters, { params }); + } + const initialRq = await this.get('users/:id/following', parameters, { fullResponse: true, params }); + return new user_paginator_v2_1.UserFollowingV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: parameters, + sharedParams: params, + }); + } + /** + * Allows you to get information about a user’s liked Tweets. + * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/get-users-id-liked_tweets + */ + async userLikedTweets(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/liked_tweets', options, { fullResponse: true, params }); + return new paginators_1.TweetV2UserLikedTweetsPaginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns a list of users who are blocked by the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/get-users-blocking + */ + async userBlockingUsers(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/blocking', options, { fullResponse: true, params }); + return new user_paginator_v2_1.UserBlockingUsersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns a list of users who are muted by the authenticating user. + * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/get-users-muting + */ + async userMutingUsers(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/muting', options, { fullResponse: true, params }); + return new user_paginator_v2_1.UserMutingUsersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /* Lists */ + /** + * Returns the details of a specified List. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-lists-id + */ + list(id, options = {}) { + return this.get('lists/:id', options, { params: { id } }); + } + /** + * Returns all Lists owned by the specified user. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-users-id-owned_lists + */ + async listsOwned(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/owned_lists', options, { fullResponse: true, params }); + return new paginators_1.UserOwnedListsV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns all Lists a specified user is a member of. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-members/api-reference/get-users-id-list_memberships + */ + async listMemberships(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/list_memberships', options, { fullResponse: true, params }); + return new paginators_1.UserListMembershipsV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns all Lists a specified user follows. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-follows/api-reference/get-users-id-followed_lists + */ + async listFollowed(userId, options = {}) { + const params = { id: userId }; + const initialRq = await this.get('users/:id/followed_lists', options, { fullResponse: true, params }); + return new paginators_1.UserListFollowedV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns a list of Tweets from the specified List. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-tweets/api-reference/get-lists-id-tweets + */ + async listTweets(listId, options = {}) { + const params = { id: listId }; + const initialRq = await this.get('lists/:id/tweets', options, { fullResponse: true, params }); + return new paginators_1.TweetV2ListTweetsPaginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns a list of users who are members of the specified List. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-members/api-reference/get-lists-id-members + */ + async listMembers(listId, options = {}) { + const params = { id: listId }; + const initialRq = await this.get('lists/:id/members', options, { fullResponse: true, params }); + return new user_paginator_v2_1.UserListMembersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /** + * Returns a list of users who are followers of the specified List. + * https://developer.twitter.com/en/docs/twitter-api/lists/list-follows/api-reference/get-lists-id-followers + */ + async listFollowers(listId, options = {}) { + const params = { id: listId }; + const initialRq = await this.get('lists/:id/followers', options, { fullResponse: true, params }); + return new user_paginator_v2_1.UserListFollowersV2Paginator({ + realData: initialRq.data, + rateLimit: initialRq.rateLimit, + instance: this, + queryParams: { ...options }, + sharedParams: params, + }); + } + /* Spaces */ + /** + * Get a single space by ID. + * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id + * + * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. + */ + space(spaceId, options = {}) { + return this.get('spaces/:id', options, { params: { id: spaceId } }); + } + /** + * Get spaces using their IDs. + * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces + * + * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. + */ + spaces(spaceIds, options = {}) { + return this.get('spaces', { ids: spaceIds, ...options }); + } + /** + * Get spaces using their creator user ID(s). (no pagination available) + * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-by-creator-ids + * + * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. + */ + spacesByCreators(creatorIds, options = {}) { + return this.get('spaces/by/creator_ids', { user_ids: creatorIds, ...options }); + } + /** + * Search through spaces using multiple params. (no pagination available) + * https://developer.twitter.com/en/docs/twitter-api/spaces/search/api-reference/get-spaces-search + */ + searchSpaces(options) { + return this.get('spaces/search', options); + } + /** + * Returns a list of user who purchased a ticket to the requested Space. + * You must authenticate the request using the Access Token of the creator of the requested Space. + * + * **OAuth 2.0 Access Token required** + * + * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id-buyers + * + * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. + */ + spaceBuyers(spaceId, options = {}) { + return this.get('spaces/:id/buyers', options, { params: { id: spaceId } }); + } + searchStream({ autoConnect, ...options } = {}) { + return this.getStream('tweets/search/stream', options, { payloadIsError: helpers_1.isTweetStreamV2ErrorPayload, autoConnect }); + } + /** + * Return a list of rules currently active on the streaming endpoint, either as a list or individually. + * https://developer.twitter.com/en/docs/twitter-api/tweets/filtered-stream/api-reference/get-tweets-search-stream-rules + */ + streamRules(options = {}) { + return this.get('tweets/search/stream/rules', options); + } + updateStreamRules(options, query = {}) { + return this.post('tweets/search/stream/rules', options, { query }); + } + sampleStream({ autoConnect, ...options } = {}) { + return this.getStream('tweets/sample/stream', options, { payloadIsError: helpers_1.isTweetStreamV2ErrorPayload, autoConnect }); + } + /* Batch compliance */ + /** + * Returns a list of recent compliance jobs. + * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs + */ + complianceJobs(options) { + return this.get('compliance/jobs', options); + } + /** + * Get a single compliance job with the specified ID. + * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs-id + */ + complianceJob(jobId) { + return this.get('compliance/jobs/:id', undefined, { params: { id: jobId } }); + } + /** + * Creates a new compliance job for Tweet IDs or user IDs, send your file, await result and parse it into an array. + * You can run one batch job at a time. Returns the created job, but **not the job result!**. + * + * You can obtain the result (**after job is completed**) with `.complianceJobResult`. + * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs + */ + async sendComplianceJob(jobParams) { + const job = await this.post('compliance/jobs', { type: jobParams.type, name: jobParams.name }); + // Send the IDs + const rawIdsBody = jobParams.ids instanceof Buffer ? jobParams.ids : Buffer.from(jobParams.ids.join('\n')); + // Upload the IDs + await this.put(job.data.upload_url, rawIdsBody, { + forceBodyMode: 'raw', + enableAuth: false, + headers: { 'Content-Type': 'text/plain' }, + prefix: '', + }); + return job; + } + /** + * Get the result of a running or completed job, obtained through `.complianceJob`, `.complianceJobs` or `.sendComplianceJob`. + * If job is still running (`in_progress`), it will await until job is completed. **This could be quite long!** + * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs + */ + async complianceJobResult(job) { + let runningJob = job; + while (runningJob.status !== 'complete') { + if (runningJob.status === 'expired' || runningJob.status === 'failed') { + throw new Error('Job failed to be completed.'); + } + await new Promise(resolve => setTimeout(resolve, 3500)); + runningJob = (await this.complianceJob(job.id)).data; + } + // Download and parse result + const result = await this.get(job.download_url, undefined, { + enableAuth: false, + prefix: '', + }); + return result + .trim() + .split('\n') + .filter(line => line) + .map(line => JSON.parse(line)); + } +} +exports["default"] = TwitterApiv2ReadOnly; + + +/***/ }), + +/***/ 5587: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const globals_1 = __nccwpck_require__(3444); +const client_v2_read_1 = __importDefault(__nccwpck_require__(7318)); +const client_v2_labs_write_1 = __importDefault(__nccwpck_require__(8191)); +/** + * Base Twitter v2 client with read/write rights. + */ +class TwitterApiv2ReadWrite extends client_v2_read_1.default { + constructor() { + super(...arguments); + this._prefix = globals_1.API_V2_PREFIX; + } + /* Sub-clients */ + /** + * Get a client with only read rights. + */ + get readOnly() { + return this; + } + /** + * Get a client for v2 labs endpoints. + */ + get labs() { + if (this._labs) + return this._labs; + return this._labs = new client_v2_labs_write_1.default(this); + } + /* Tweets */ + /** + * Hides or unhides a reply to a Tweet. + * https://developer.twitter.com/en/docs/twitter-api/tweets/hide-replies/api-reference/put-tweets-id-hidden + */ + hideReply(tweetId, makeHidden) { + return this.put('tweets/:id/hidden', { hidden: makeHidden }, { params: { id: tweetId } }); + } + /** + * Causes the user ID identified in the path parameter to Like the target Tweet. + * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/post-users-user_id-likes + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + like(loggedUserId, targetTweetId) { + return this.post('users/:id/likes', { tweet_id: targetTweetId }, { params: { id: loggedUserId } }); + } + /** + * Allows a user or authenticated user ID to unlike a Tweet. + * The request succeeds with no action when the user sends a request to a user they're not liking the Tweet or have already unliked the Tweet. + * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/delete-users-id-likes-tweet_id + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + unlike(loggedUserId, targetTweetId) { + return this.delete('users/:id/likes/:tweet_id', undefined, { + params: { id: loggedUserId, tweet_id: targetTweetId }, + }); + } + /** + * Causes the user ID identified in the path parameter to Retweet the target Tweet. + * https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/api-reference/post-users-id-retweets + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + retweet(loggedUserId, targetTweetId) { + return this.post('users/:id/retweets', { tweet_id: targetTweetId }, { params: { id: loggedUserId } }); + } + /** + * Allows a user or authenticated user ID to remove the Retweet of a Tweet. + * The request succeeds with no action when the user sends a request to a user they're not Retweeting the Tweet or have already removed the Retweet of. + * https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/api-reference/delete-users-id-retweets-tweet_id + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + unretweet(loggedUserId, targetTweetId) { + return this.delete('users/:id/retweets/:tweet_id', undefined, { + params: { id: loggedUserId, tweet_id: targetTweetId }, + }); + } + tweet(status, payload = {}) { + if (typeof status === 'object') { + payload = status; + } + else { + payload = { text: status, ...payload }; + } + return this.post('tweets', payload); + } + /** + * Reply to a Tweet on behalf of an authenticated user. + * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets + */ + reply(status, toTweetId, payload = {}) { + var _a; + const reply = { in_reply_to_tweet_id: toTweetId, ...(_a = payload.reply) !== null && _a !== void 0 ? _a : {} }; + return this.post('tweets', { text: status, ...payload, reply }); + } + /** + * Quote an existing Tweet on behalf of an authenticated user. + * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets + */ + quote(status, quotedTweetId, payload = {}) { + return this.tweet(status, { ...payload, quote_tweet_id: quotedTweetId }); + } + /** + * Post a series of tweets. + * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets + */ + async tweetThread(tweets) { + var _a, _b; + const postedTweets = []; + for (const tweet of tweets) { + // Retrieve the last sent tweet + const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null; + // Build the tweet query params + const queryParams = { ...(typeof tweet === 'string' ? ({ text: tweet }) : tweet) }; + // Reply to an existing tweet if needed + const inReplyToId = lastTweet ? lastTweet.data.id : (_a = queryParams.reply) === null || _a === void 0 ? void 0 : _a.in_reply_to_tweet_id; + const status = (_b = queryParams.text) !== null && _b !== void 0 ? _b : ''; + if (inReplyToId) { + postedTweets.push(await this.reply(status, inReplyToId, queryParams)); + } + else { + postedTweets.push(await this.tweet(status, queryParams)); + } + } + return postedTweets; + } + /** + * Allows a user or authenticated user ID to delete a Tweet + * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/delete-tweets-id + */ + deleteTweet(tweetId) { + return this.delete('tweets/:id', undefined, { + params: { + id: tweetId, + }, + }); + } + /* Bookmarks */ + /** + * Causes the user ID of an authenticated user identified in the path parameter to Bookmark the target Tweet provided in the request body. + * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/post-users-id-bookmarks + * + * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write` + */ + async bookmark(tweetId) { + const user = await this.getCurrentUserV2Object(); + return this.post('users/:id/bookmarks', { tweet_id: tweetId }, { params: { id: user.data.id } }); + } + /** + * Allows a user or authenticated user ID to remove a Bookmark of a Tweet. + * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/delete-users-id-bookmarks-tweet_id + * + * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write` + */ + async deleteBookmark(tweetId) { + const user = await this.getCurrentUserV2Object(); + return this.delete('users/:id/bookmarks/:tweet_id', undefined, { params: { id: user.data.id, tweet_id: tweetId } }); + } + /* Users */ + /** + * Allows a user ID to follow another user. + * If the target user does not have public Tweets, this endpoint will send a follow request. + * https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/post-users-source_user_id-following + * + * OAuth2 scope: `follows.write` + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + follow(loggedUserId, targetUserId) { + return this.post('users/:id/following', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); + } + /** + * Allows a user ID to unfollow another user. + * https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/delete-users-source_id-following + * + * OAuth2 scope: `follows.write` + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + unfollow(loggedUserId, targetUserId) { + return this.delete('users/:source_user_id/following/:target_user_id', undefined, { + params: { source_user_id: loggedUserId, target_user_id: targetUserId }, + }); + } + /** + * Causes the user (in the path) to block the target user. + * The user (in the path) must match the user context authorizing the request. + * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/post-users-user_id-blocking + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + block(loggedUserId, targetUserId) { + return this.post('users/:id/blocking', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); + } + /** + * Allows a user or authenticated user ID to unblock another user. + * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/delete-users-user_id-blocking + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + unblock(loggedUserId, targetUserId) { + return this.delete('users/:source_user_id/blocking/:target_user_id', undefined, { + params: { source_user_id: loggedUserId, target_user_id: targetUserId }, + }); + } + /** + * Allows an authenticated user ID to mute the target user. + * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/post-users-user_id-muting + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + mute(loggedUserId, targetUserId) { + return this.post('users/:id/muting', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); + } + /** + * Allows an authenticated user ID to unmute the target user. + * The request succeeds with no action when the user sends a request to a user they're not muting or have already unmuted. + * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/delete-users-user_id-muting + * + * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. + */ + unmute(loggedUserId, targetUserId) { + return this.delete('users/:source_user_id/muting/:target_user_id', undefined, { + params: { source_user_id: loggedUserId, target_user_id: targetUserId }, + }); + } + /* Lists */ + /** + * Creates a new list for the authenticated user. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-lists + */ + createList(options) { + return this.post('lists', options); + } + /** + * Updates the specified list. The authenticated user must own the list to be able to update it. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/put-lists-id + */ + updateList(listId, options = {}) { + return this.put('lists/:id', options, { params: { id: listId } }); + } + /** + * Deletes the specified list. The authenticated user must own the list to be able to destroy it. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-lists-id + */ + removeList(listId) { + return this.delete('lists/:id', undefined, { params: { id: listId } }); + } + /** + * Adds a member to a list. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-lists-id-members + */ + addListMember(listId, userId) { + return this.post('lists/:id/members', { user_id: userId }, { params: { id: listId } }); + } + /** + * Remember a member to a list. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-lists-id-members-user_id + */ + removeListMember(listId, userId) { + return this.delete('lists/:id/members/:user_id', undefined, { params: { id: listId, user_id: userId } }); + } + /** + * Subscribes the authenticated user to the specified list. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-followed-lists + */ + subscribeToList(loggedUserId, listId) { + return this.post('users/:id/followed_lists', { list_id: listId }, { params: { id: loggedUserId } }); + } + /** + * Unsubscribes the authenticated user to the specified list. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-followed-lists-list_id + */ + unsubscribeOfList(loggedUserId, listId) { + return this.delete('users/:id/followed_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } }); + } + /** + * Enables the authenticated user to pin a List. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-pinned-lists + */ + pinList(loggedUserId, listId) { + return this.post('users/:id/pinned_lists', { list_id: listId }, { params: { id: loggedUserId } }); + } + /** + * Enables the authenticated user to unpin a List. + * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-pinned-lists-list_id + */ + unpinList(loggedUserId, listId) { + return this.delete('users/:id/pinned_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } }); + } +} +exports["default"] = TwitterApiv2ReadWrite; + + +/***/ }), + +/***/ 876: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TwitterV2IncludesHelper = void 0; +/** + * Provide helpers for `.includes` of a v2 API result. + * Needed expansions for a method to work are specified (*`like this`*). + */ +class TwitterV2IncludesHelper { + constructor(result) { + this.result = result; + } + /* Tweets */ + get tweets() { + return TwitterV2IncludesHelper.tweets(this.result); + } + static tweets(result) { + var _a, _b; + return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.tweets) !== null && _b !== void 0 ? _b : []; + } + tweetById(id) { + return TwitterV2IncludesHelper.tweetById(this.result, id); + } + static tweetById(result, id) { + return this.tweets(result).find(tweet => tweet.id === id); + } + /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */ + retweet(tweet) { + return TwitterV2IncludesHelper.retweet(this.result, tweet); + } + /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */ + static retweet(result, tweet) { + var _a; + const retweetIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) + .filter(ref => ref.type === 'retweeted') + .map(ref => ref.id); + return this.tweets(result).find(t => retweetIds.includes(t.id)); + } + /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */ + quote(tweet) { + return TwitterV2IncludesHelper.quote(this.result, tweet); + } + /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */ + static quote(result, tweet) { + var _a; + const quoteIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) + .filter(ref => ref.type === 'quoted') + .map(ref => ref.id); + return this.tweets(result).find(t => quoteIds.includes(t.id)); + } + /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */ + repliedTo(tweet) { + return TwitterV2IncludesHelper.repliedTo(this.result, tweet); + } + /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */ + static repliedTo(result, tweet) { + var _a; + const repliesIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) + .filter(ref => ref.type === 'replied_to') + .map(ref => ref.id); + return this.tweets(result).find(t => repliesIds.includes(t.id)); + } + /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */ + author(tweet) { + return TwitterV2IncludesHelper.author(this.result, tweet); + } + /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */ + static author(result, tweet) { + const authorId = tweet.author_id; + return authorId ? this.users(result).find(u => u.id === authorId) : undefined; + } + /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */ + repliedToAuthor(tweet) { + return TwitterV2IncludesHelper.repliedToAuthor(this.result, tweet); + } + /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */ + static repliedToAuthor(result, tweet) { + const inReplyUserId = tweet.in_reply_to_user_id; + return inReplyUserId ? this.users(result).find(u => u.id === inReplyUserId) : undefined; + } + /* Users */ + get users() { + return TwitterV2IncludesHelper.users(this.result); + } + static users(result) { + var _a, _b; + return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.users) !== null && _b !== void 0 ? _b : []; + } + userById(id) { + return TwitterV2IncludesHelper.userById(this.result, id); + } + static userById(result, id) { + return this.users(result).find(u => u.id === id); + } + /** Pinned tweet of the given user (*`pinned_tweet_id`*) */ + pinnedTweet(user) { + return TwitterV2IncludesHelper.pinnedTweet(this.result, user); + } + /** Pinned tweet of the given user (*`pinned_tweet_id`*) */ + static pinnedTweet(result, user) { + return user.pinned_tweet_id ? this.tweets(result).find(t => t.id === user.pinned_tweet_id) : undefined; + } + /* Medias */ + get media() { + return TwitterV2IncludesHelper.media(this.result); + } + static media(result) { + var _a, _b; + return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.media) !== null && _b !== void 0 ? _b : []; + } + /** Medias associated with the given tweet (*`attachments.media_keys`*) */ + medias(tweet) { + return TwitterV2IncludesHelper.medias(this.result, tweet); + } + /** Medias associated with the given tweet (*`attachments.media_keys`*) */ + static medias(result, tweet) { + var _a, _b; + const keys = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.media_keys) !== null && _b !== void 0 ? _b : []; + return this.media(result).filter(m => keys.includes(m.media_key)); + } + /* Polls */ + get polls() { + return TwitterV2IncludesHelper.polls(this.result); + } + static polls(result) { + var _a, _b; + return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.polls) !== null && _b !== void 0 ? _b : []; + } + /** Poll associated with the given tweet (*`attachments.poll_ids`*) */ + poll(tweet) { + return TwitterV2IncludesHelper.poll(this.result, tweet); + } + /** Poll associated with the given tweet (*`attachments.poll_ids`*) */ + static poll(result, tweet) { + var _a, _b; + const pollIds = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.poll_ids) !== null && _b !== void 0 ? _b : []; + if (pollIds.length) { + const pollId = pollIds[0]; + return this.polls(result).find(p => p.id === pollId); + } + return undefined; + } + /* Places */ + get places() { + return TwitterV2IncludesHelper.places(this.result); + } + static places(result) { + var _a, _b; + return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.places) !== null && _b !== void 0 ? _b : []; + } + /** Place associated with the given tweet (*`geo.place_id`*) */ + place(tweet) { + return TwitterV2IncludesHelper.place(this.result, tweet); + } + /** Place associated with the given tweet (*`geo.place_id`*) */ + static place(result, tweet) { + var _a; + const placeId = (_a = tweet.geo) === null || _a === void 0 ? void 0 : _a.place_id; + return placeId ? this.places(result).find(p => p.id === placeId) : undefined; + } + /* Lists */ + /** List owner of the given list (*`owner_id`*) */ + listOwner(list) { + return TwitterV2IncludesHelper.listOwner(this.result, list); + } + /** List owner of the given list (*`owner_id`*) */ + static listOwner(result, list) { + const creatorId = list.owner_id; + return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined; + } + /* Spaces */ + /** Creator of the given space (*`creator_id`*) */ + spaceCreator(space) { + return TwitterV2IncludesHelper.spaceCreator(this.result, space); + } + /** Creator of the given space (*`creator_id`*) */ + static spaceCreator(result, space) { + const creatorId = space.creator_id; + return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined; + } + /** Current hosts of the given space (*`host_ids`*) */ + spaceHosts(space) { + return TwitterV2IncludesHelper.spaceHosts(this.result, space); + } + /** Current hosts of the given space (*`host_ids`*) */ + static spaceHosts(result, space) { + var _a; + const hostIds = (_a = space.host_ids) !== null && _a !== void 0 ? _a : []; + return this.users(result).filter(u => hostIds.includes(u.id)); + } + /** Current speakers of the given space (*`speaker_ids`*) */ + spaceSpeakers(space) { + return TwitterV2IncludesHelper.spaceSpeakers(this.result, space); + } + /** Current speakers of the given space (*`speaker_ids`*) */ + static spaceSpeakers(result, space) { + var _a; + const speakerIds = (_a = space.speaker_ids) !== null && _a !== void 0 ? _a : []; + return this.users(result).filter(u => speakerIds.includes(u.id)); + } + /** Current invited users of the given space (*`invited_user_ids`*) */ + spaceInvitedUsers(space) { + return TwitterV2IncludesHelper.spaceInvitedUsers(this.result, space); + } + /** Current invited users of the given space (*`invited_user_ids`*) */ + static spaceInvitedUsers(result, space) { + var _a; + const invitedUserIds = (_a = space.invited_user_ids) !== null && _a !== void 0 ? _a : []; + return this.users(result).filter(u => invitedUserIds.includes(u.id)); + } +} +exports.TwitterV2IncludesHelper = TwitterV2IncludesHelper; + + +/***/ }), + +/***/ 6300: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractEntitiesWithIndices = _interopRequireDefault(__nccwpck_require__(7375)); + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractEntitiesWithIndices["default"])(text, { + extractUrlsWithoutProtocol: false + }); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 9915: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractCashtagsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 1352: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(7920); + +var _clone = _interopRequireDefault(__nccwpck_require__(2105)); + +var _extractHtmlAttrsFromOptions = _interopRequireDefault(__nccwpck_require__(6167)); + +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); + +var _linkToCashtag = _interopRequireDefault(__nccwpck_require__(5583)); + +var _linkToHashtag = _interopRequireDefault(__nccwpck_require__(5537)); + +var _linkToUrl = _interopRequireDefault(__nccwpck_require__(1656)); + +var _linkToMentionAndList = _interopRequireDefault(__nccwpck_require__(8702)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Default CSS class for auto-linked lists (along with the url class) +var DEFAULT_LIST_CLASS = 'tweet-url list-slug'; // Default CSS class for auto-linked usernames (along with the url class) + +var DEFAULT_USERNAME_CLASS = 'tweet-url username'; // Default CSS class for auto-linked hashtags (along with the url class) + +var DEFAULT_HASHTAG_CLASS = 'tweet-url hashtag'; // Default CSS class for auto-linked cashtags (along with the url class) + +var DEFAULT_CASHTAG_CLASS = 'tweet-url cashtag'; + +function _default(text, entities, options) { + var options = (0, _clone["default"])(options || {}); + options.hashtagClass = options.hashtagClass || DEFAULT_HASHTAG_CLASS; + options.hashtagUrlBase = options.hashtagUrlBase || 'https://twitter.com/search?q=%23'; + options.cashtagClass = options.cashtagClass || DEFAULT_CASHTAG_CLASS; + options.cashtagUrlBase = options.cashtagUrlBase || 'https://twitter.com/search?q=%24'; + options.listClass = options.listClass || DEFAULT_LIST_CLASS; + options.usernameClass = options.usernameClass || DEFAULT_USERNAME_CLASS; + options.usernameUrlBase = options.usernameUrlBase || 'https://twitter.com/'; + options.listUrlBase = options.listUrlBase || 'https://twitter.com/'; + options.htmlAttrs = (0, _extractHtmlAttrsFromOptions["default"])(options); + options.invisibleTagAttrs = options.invisibleTagAttrs || "style='position:absolute;left:-9999px;'"; // remap url entities to hash + + var urlEntities, i, len; + + if (options.urlEntities) { + urlEntities = {}; + + for (i = 0, len = options.urlEntities.length; i < len; i++) { + urlEntities[options.urlEntities[i].url] = options.urlEntities[i]; + } + + options.urlEntities = urlEntities; + } + + var result = ''; + var beginIndex = 0; // sort entities by start index + + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var nonEntity = options.htmlEscapeNonEntities ? _htmlEscape["default"] : function (text) { + return text; + }; + + for (var i = 0; i < entities.length; i++) { + var entity = entities[i]; + result += nonEntity(text.substring(beginIndex, entity.indices[0])); + + if (entity.url) { + result += (0, _linkToUrl["default"])(entity, text, options); + } else if (entity.hashtag) { + result += (0, _linkToHashtag["default"])(entity, text, options); + } else if (entity.screenName) { + result += (0, _linkToMentionAndList["default"])(entity, text, options); + } else if (entity.cashtag) { + result += (0, _linkToCashtag["default"])(entity, text, options); + } + + beginIndex = entity.indices[1]; + } + + result += nonEntity(text.substring(beginIndex, text.length)); + return result; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 5165: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractHashtagsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 7465: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractUrlsWithIndices["default"])(text, { + extractUrlsWithoutProtocol: false + }); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 4240: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractMentionsOrListsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 8478: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__nccwpck_require__(1614)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, json, options) { + // map JSON entity to twitter-text entity + if (json.user_mentions) { + for (var i = 0; i < json.user_mentions.length; i++) { + // this is a @mention + json.user_mentions[i].screenName = json.user_mentions[i].screen_name; + } + } + + if (json.hashtags) { + for (var i = 0; i < json.hashtags.length; i++) { + // this is a #hashtag + json.hashtags[i].hashtag = json.hashtags[i].text; + } + } + + if (json.symbols) { + for (var i = 0; i < json.symbols.length; i++) { + // this is a $CASH tag + json.symbols[i].cashtag = json.symbols[i].text; + } + } // concatenate all entities + + + var entities = []; + + for (var key in json) { + entities = entities.concat(json[key]); + } // modify indices to UTF-16 + + + (0, _modifyIndicesFromUnicodeToUTF["default"])(text, entities); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 6290: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// This file is generated by scripts/buildConfig.js +var _default = { + version1: { + version: 1, + maxWeightedTweetLength: 140, + scale: 1, + defaultWeight: 1, + transformedURLLength: 23, + ranges: [] + }, + version2: { + version: 2, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] + }, + version3: { + version: 3, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + emojiParsingEnabled: true, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] + }, + defaults: { + version: 3, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + emojiParsingEnabled: true, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] + } +}; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), + +/***/ 1398: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(7920); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, entities, indicesInUTF16) { + if (entities.length == 0) { + return; + } + + var charIndex = 0; + var codePointIndex = 0; // sort entities by start index + + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var entityIndex = 0; + var entity = entities[0]; + + while (charIndex < text.length) { + if (entity.indices[0] == (indicesInUTF16 ? charIndex : codePointIndex)) { + var len = entity.indices[1] - entity.indices[0]; + entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; + entity.indices[1] = entity.indices[0] + len; + entityIndex++; + + if (entityIndex == entities.length) { + // no more entity + break; + } + + entity = entities[entityIndex]; + } + + var c = text.charCodeAt(charIndex); + + if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { + // Found high surrogate char + c = text.charCodeAt(charIndex + 1); + + if (c >= 0xdc00 && c <= 0xdfff) { + // Found surrogate pair + charIndex++; + } + } + + codePointIndex++; + charIndex++; + } +} + +module.exports = exports.default; + +/***/ }), + +/***/ 7456: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var cashtagsOnly = [], + cashtagsWithIndices = (0, _extractCashtagsWithIndices["default"])(text); + + for (var i = 0; i < cashtagsWithIndices.length; i++) { + cashtagsOnly.push(cashtagsWithIndices[i].cashtag); + } + + return cashtagsOnly; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 7504: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(6764); + +__nccwpck_require__(8074); + +var _validCashtag = _interopRequireDefault(__nccwpck_require__(8382)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + if (!text || text.indexOf('$') === -1) { + return []; + } + + var tags = []; + text.replace(_validCashtag["default"], function (match, before, dollar, cashtag, offset, chunk) { + var startPosition = offset + before.length; + var endPosition = startPosition + cashtag.length + 1; + tags.push({ + cashtag: cashtag, + indices: [startPosition, endPosition] + }); + }); + return tags; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 7375: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); + +var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + +var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractUrlsWithIndices["default"])(text, options).concat((0, _extractMentionsOrListsWithIndices["default"])(text)).concat((0, _extractHashtagsWithIndices["default"])(text, { + checkUrlOverlap: false + })).concat((0, _extractCashtagsWithIndices["default"])(text)); + + if (entities.length == 0) { + return []; + } + + (0, _removeOverlappingEntities["default"])(entities); + return entities; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 9422: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var hashtagsOnly = []; + var hashtagsWithIndices = (0, _extractHashtagsWithIndices["default"])(text); + + for (var i = 0; i < hashtagsWithIndices.length; i++) { + hashtagsOnly.push(hashtagsWithIndices[i].hashtag); + } + + return hashtagsOnly; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 2280: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +__nccwpck_require__(6764); + +__nccwpck_require__(4931); + +var _endHashtagMatch = _interopRequireDefault(__nccwpck_require__(1226)); + +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + +var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); + +var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); + +var _validHashtag = _interopRequireDefault(__nccwpck_require__(6826)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var extractHashtagsWithIndices = function extractHashtagsWithIndices(text, options) { + if (!options) { + options = { + checkUrlOverlap: true + }; + } + + if (!text || !text.match(_hashSigns["default"])) { + return []; + } + + var tags = []; + text.replace(_validHashtag["default"], function (match, before, hash, hashText, offset, chunk) { + var after = chunk.slice(offset + match.length); + + if (after.match(_endHashtagMatch["default"])) { + return; + } + + var startPosition = offset + before.length; + var endPosition = startPosition + hashText.length + 1; + tags.push({ + hashtag: hashText, + indices: [startPosition, endPosition] + }); + }); + + if (options.checkUrlOverlap) { + // also extract URL entities + var urls = (0, _extractUrlsWithIndices["default"])(text); + + if (urls.length > 0) { + var entities = tags.concat(urls); // remove overlap + + (0, _removeOverlappingEntities["default"])(entities); // only push back hashtags + + tags = []; + + for (var i = 0; i < entities.length; i++) { + if (entities[i].hashtag) { + tags.push(entities[i]); + } + } + } + } + + return tags; +}; + +var _default = extractHashtagsWithIndices; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), + +/***/ 6167: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var BOOLEAN_ATTRIBUTES = { + disabled: true, + readonly: true, + multiple: true, + checked: true +}; // Options which should not be passed as HTML attributes + +var OPTIONS_NOT_ATTRIBUTES = { + urlClass: true, + listClass: true, + usernameClass: true, + hashtagClass: true, + cashtagClass: true, + usernameUrlBase: true, + listUrlBase: true, + hashtagUrlBase: true, + cashtagUrlBase: true, + usernameUrlBlock: true, + listUrlBlock: true, + hashtagUrlBlock: true, + linkUrlBlock: true, + usernameIncludeSymbol: true, + suppressLists: true, + suppressNoFollow: true, + targetBlank: true, + suppressDataScreenName: true, + urlEntities: true, + symbolTag: true, + textWithSymbolTag: true, + urlTarget: true, + invisibleTagAttrs: true, + linkAttributeBlock: true, + linkTextBlock: true, + htmlEscapeNonEntities: true +}; + +function _default(options) { + var htmlAttrs = {}; + + for (var k in options) { + var v = options[k]; + + if (OPTIONS_NOT_ATTRIBUTES[k]) { + continue; + } + + if (BOOLEAN_ATTRIBUTES[k]) { + v = v ? k : null; + } + + if (v == null) { + continue; + } + + htmlAttrs[k] = v; + } + + return htmlAttrs; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 10: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractMentionsWithIndices = _interopRequireDefault(__nccwpck_require__(172)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var screenNamesOnly = [], + screenNamesWithIndices = (0, _extractMentionsWithIndices["default"])(text); + + for (var i = 0; i < screenNamesWithIndices.length; i++) { + var screenName = screenNamesWithIndices[i].screenName; + screenNamesOnly.push(screenName); + } + + return screenNamesOnly; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 2895: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(6764); + +__nccwpck_require__(4931); + +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); + +var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); + +var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + if (!text || !text.match(_atSigns["default"])) { + return []; + } + + var possibleNames = []; + text.replace(_validMentionOrList["default"], function (match, before, atSign, screenName, slashListname, offset, chunk) { + var after = chunk.slice(offset + match.length); + + if (!after.match(_endMentionMatch["default"])) { + slashListname = slashListname || ''; + var startPosition = offset + before.length; + var endPosition = startPosition + screenName.length + slashListname.length + 1; + possibleNames.push({ + screenName: screenName, + listSlug: slashListname, + indices: [startPosition, endPosition] + }); + } + }); + return possibleNames; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 172: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var mentions = []; + var mentionOrList; + var mentionsOrLists = (0, _extractMentionsOrListsWithIndices["default"])(text); + + for (var i = 0; i < mentionsOrLists.length; i++) { + mentionOrList = mentionsOrLists[i]; + + if (mentionOrList.listSlug === '') { + mentions.push({ + screenName: mentionOrList.screenName, + indices: mentionOrList.indices + }); + } + } + + return mentions; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 9043: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(7662); + +__nccwpck_require__(4931); + +var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); + +var _validReply = _interopRequireDefault(__nccwpck_require__(2575)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + if (!text) { + return null; + } + + var possibleScreenName = text.match(_validReply["default"]); + + if (!possibleScreenName || RegExp.rightContext.match(_endMentionMatch["default"])) { + return null; + } + + return possibleScreenName[1]; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 4419: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var urlsOnly = []; + var urlsWithIndices = (0, _extractUrlsWithIndices["default"])(text, options); + + for (var i = 0; i < urlsWithIndices.length; i++) { + urlsOnly.push(urlsWithIndices[i].url); + } + + return urlsOnly; +} + +module.exports = exports.default; + +/***/ }), + +/***/ 2429: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +__nccwpck_require__(8074); + +__nccwpck_require__(6764); + +__nccwpck_require__(7662); + +__nccwpck_require__(4931); + +var _extractUrl = _interopRequireDefault(__nccwpck_require__(9871)); + +var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__nccwpck_require__(4130)); + +var _idna = _interopRequireDefault(__nccwpck_require__(770)); + +var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); + +var _validTcoUrl = _interopRequireDefault(__nccwpck_require__(1527)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var DEFAULT_PROTOCOL = 'https://'; +var DEFAULT_PROTOCOL_OPTIONS = { + extractUrlsWithoutProtocol: true +}; +var MAX_URL_LENGTH = 4096; +var MAX_TCO_SLUG_LENGTH = 40; + +var extractUrlsWithIndices = function extractUrlsWithIndices(text) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_PROTOCOL_OPTIONS; + + if (!text || (options.extractUrlsWithoutProtocol ? !text.match(/\./) : !text.match(/:/))) { + return []; + } + + var urls = []; + + var _loop = function _loop() { + var before = RegExp.$2; + var url = RegExp.$3; + var protocol = RegExp.$4; + var domain = RegExp.$5; + var path = RegExp.$7; + var endPosition = _extractUrl["default"].lastIndex; + var startPosition = endPosition - url.length; + + if (!isValidUrl(url, protocol || DEFAULT_PROTOCOL, domain)) { + return "continue"; + } // extract ASCII-only domains. + + + if (!protocol) { + if (!options.extractUrlsWithoutProtocol || before.match(_invalidUrlWithoutProtocolPrecedingChars["default"])) { + return "continue"; + } + + var lastUrl = null; + var asciiEndPosition = 0; + domain.replace(_validAsciiDomain["default"], function (asciiDomain) { + var asciiStartPosition = domain.indexOf(asciiDomain, asciiEndPosition); + asciiEndPosition = asciiStartPosition + asciiDomain.length; + lastUrl = { + url: asciiDomain, + indices: [startPosition + asciiStartPosition, startPosition + asciiEndPosition] + }; + urls.push(lastUrl); + }); // no ASCII-only domain found. Skip the entire URL. + + if (lastUrl == null) { + return "continue"; + } // lastUrl only contains domain. Need to add path and query if they exist. + + + if (path) { + lastUrl.url = url.replace(domain, lastUrl.url); + lastUrl.indices[1] = endPosition; + } + } else { + // In the case of t.co URLs, don't allow additional path characters. + if (url.match(_validTcoUrl["default"])) { + var tcoUrlSlug = RegExp.$1; + + if (tcoUrlSlug && tcoUrlSlug.length > MAX_TCO_SLUG_LENGTH) { + return "continue"; + } else { + url = RegExp.lastMatch; + endPosition = startPosition + url.length; + } + } + + urls.push({ + url: url, + indices: [startPosition, endPosition] + }); + } + }; + + while (_extractUrl["default"].exec(text)) { + var _ret = _loop(); + + if (_ret === "continue") continue; + } + + return urls; +}; + +var isValidUrl = function isValidUrl(url, protocol, domain) { + var urlLength = url.length; + + var punycodeEncodedDomain = _idna["default"].toAscii(domain); + + if (!punycodeEncodedDomain || !punycodeEncodedDomain.length) { + return false; + } + + urlLength = urlLength + punycodeEncodedDomain.length - domain.length; + return protocol.length + urlLength <= MAX_URL_LENGTH; +}; -module.exports = exports.default; - -/***/ }), -/* 113 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -var crypto = __webpack_require__(417) - -function sha (key, body, algorithm) { - return crypto.createHmac(algorithm, key).update(body).digest('base64') -} - -function rsa (key, body) { - return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64') -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') -} - -// Maps object to bi-dimensional array -// Converts { foo: 'A', bar: [ 'b', 'B' ]} to -// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ] -function map (obj) { - var key, val, arr = [] - for (key in obj) { - val = obj[key] - if (Array.isArray(val)) - for (var i = 0; i < val.length; i++) - arr.push([key, val[i]]) - else if (typeof val === 'object') - for (var prop in val) - arr.push([key + '[' + prop + ']', val[prop]]) - else - arr.push([key, val]) - } - return arr -} - -// Compare function for sort -function compare (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -function generateBase (httpMethod, base_uri, params) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - // Parameter normalization - // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - var normalized = map(params) - // 1. First, the name and value of each parameter are encoded - .map(function (p) { - return [ rfc3986(p[0]), rfc3986(p[1] || '') ] - }) - // 2. The parameters are sorted by name, using ascending byte value - // ordering. If two or more parameters share the same name, they - // are sorted by their value. - .sort(function (a, b) { - return compare(a[0], b[0]) || compare(a[1], b[1]) - }) - // 3. The name of each parameter is concatenated to its corresponding - // value using an "=" character (ASCII code 61) as a separator, even - // if the value is empty. - .map(function (p) { return p.join('=') }) - // 4. The sorted name/value pairs are concatenated together into a - // single string by using an "&" character (ASCII code 38) as - // separator. - .join('&') - - var base = [ - rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), - rfc3986(base_uri), - rfc3986(normalized) - ].join('&') - - return base -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return sha(key, base, 'sha1') -} - -function hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return sha(key, base, 'sha256') -} - -function rsasign (httpMethod, base_uri, params, private_key, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = private_key || '' - - return rsa(key, base) -} - -function plaintext (consumer_secret, token_secret) { - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return key -} - -function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) { - var method - var skipArgs = 1 - - switch (signMethod) { - case 'RSA-SHA1': - method = rsasign - break - case 'HMAC-SHA1': - method = hmacsign - break - case 'HMAC-SHA256': - method = hmacsign256 - break - case 'PLAINTEXT': - method = plaintext - skipArgs = 4 - break - default: - throw new Error('Signature method not supported: ' + signMethod) - } - - return method.apply(null, [].slice.call(arguments, skipArgs)) -} - -exports.hmacsign = hmacsign -exports.hmacsign256 = hmacsign256 -exports.rsasign = rsasign -exports.plaintext = plaintext -exports.sign = sign -exports.rfc3986 = rfc3986 -exports.generateBase = generateBase - -/***/ }), -/* 114 */, -/* 115 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlDecOctet = _interopRequireDefault(__webpack_require__(600)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlIpv4 = (0, _regexSupplant["default"])(/(?:#{validateUrlDecOctet}(?:\.#{validateUrlDecOctet}){3})/i, { - validateUrlDecOctet: _validateUrlDecOctet["default"] -}); -var _default = validateUrlIpv4; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 116 */, -/* 117 */, -/* 118 */, -/* 119 */, -/* 120 */ -/***/ (function(module) { - -"use strict"; - - -module.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); - } -}; - -module.exports.wrapperSymbol = Symbol("wrapper"); -module.exports.implSymbol = Symbol("impl"); - -module.exports.wrapperForImpl = function (impl) { - return impl[module.exports.wrapperSymbol]; -}; - -module.exports.implForWrapper = function (wrapper) { - return wrapper[module.exports.implSymbol]; -}; - - - -/***/ }), -/* 121 */, -/* 122 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Allow URL paths to contain up to two nested levels of balanced parens -// 1. Used in Wikipedia URLs like /Primer_(film) -// 2. Used in IIS sessions like /S(dfd346)/ -// 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/ -var validUrlBalancedParens = (0, _regexSupplant["default"])('\\(' + '(?:' + '#{validGeneralUrlPathChars}+' + '|' + // allow one nested level of balanced parentheses -'(?:' + '#{validGeneralUrlPathChars}*' + '\\(' + '#{validGeneralUrlPathChars}+' + '\\)' + '#{validGeneralUrlPathChars}*' + ')' + ')' + '\\)', { - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"] -}, 'i'); -var _default = validUrlBalancedParens; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 123 */, -/* 124 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -var $iterators = __webpack_require__(157); -var getKeys = __webpack_require__(333); -var redefine = __webpack_require__(976); -var global = __webpack_require__(300); -var hide = __webpack_require__(609); -var Iterators = __webpack_require__(907); -var wks = __webpack_require__(621); -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; - -var DOMIterables = { - CSSRuleList: true, // TODO: Not spec compliant, should be false. - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, // TODO: Not spec compliant, should be false. - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, // TODO: Not spec compliant, should be false. - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; - -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); - } -} - - -/***/ }), -/* 125 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// This file is generated by scripts/buildConfig.js -var _default = { - version1: { - version: 1, - maxWeightedTweetLength: 140, - scale: 1, - defaultWeight: 1, - transformedURLLength: 23, - ranges: [] - }, - version2: { - version: 2, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - }, - version3: { - version: 3, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - emojiParsingEnabled: true, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - }, - defaults: { - version: 3, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - emojiParsingEnabled: true, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - } -}; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 126 */, -/* 127 */, -/* 128 */, -/* 129 */, -/* 130 */, -/* 131 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validPunycode = /(?:xn--[\-0-9a-z]+)/; -var _default = validPunycode; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 132 */, -/* 133 */ -/***/ (function(module) { - -module.exports = {"$id":"request.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["method","url","httpVersion","cookies","headers","queryString","headersSize","bodySize"],"properties":{"method":{"type":"string"},"url":{"type":"string","format":"uri"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"queryString":{"type":"array","items":{"$ref":"query.json#"}},"postData":{"$ref":"postData.json#"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}; - -/***/ }), -/* 134 */, -/* 135 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _validate = _interopRequireDefault(__webpack_require__(634)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.substr(14, 1), 16); -} - -var _default = version; -exports.default = _default; - -/***/ }), -/* 136 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _default; -exports.URL = exports.DNS = void 0; - -var _stringify = _interopRequireDefault(__webpack_require__(960)); - -var _parse = _interopRequireDefault(__webpack_require__(204)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; -} - -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; - -function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} - -/***/ }), -/* 137 */, -/* 138 */, -/* 139 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = __webpack_require__(417); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; - - -/***/ }), -/* 140 */, -/* 141 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var net = __webpack_require__(631); -var tls = __webpack_require__(16); -var http = __webpack_require__(605); -var https = __webpack_require__(211); -var events = __webpack_require__(614); -var assert = __webpack_require__(357); -var util = __webpack_require__(669); - - -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - - -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); -} -util.inherits(TunnelingAgent, events.EventEmitter); - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit('free', socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } - - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; - -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); -} - - -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; -} - - -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); - } - console.error.apply(console, args); - } -} else { - debug = function() {}; -} -exports.debug = debug; // for test - - -/***/ }), -/* 142 */, -/* 143 */, -/* 144 */, -/* 145 */, -/* 146 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); - -var _validateUrlUnicodeDomain = _interopRequireDefault(__webpack_require__(943)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlUnicodeDomain}' + ')', { - validateUrlIp: _validateUrlIp["default"], - validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"] -}, 'i'); -var _default = validateUrlUnicodeHost; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 147 */ -/***/ (function(module) { - -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} - - -/***/ }), -/* 148 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var invalidCharsGroup = /\uFFFE\uFEFF\uFFFF/; -var _default = invalidCharsGroup; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 149 */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(670) -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype) - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - - -/***/ }), -/* 150 */, -/* 151 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var jsonSafeStringify = __webpack_require__(739) -var crypto = __webpack_require__(417) -var Buffer = __webpack_require__(149).Buffer - -var defer = typeof setImmediate === 'undefined' - ? process.nextTick - : setImmediate - -function paramsHaveRequestBody (params) { - return ( - params.body || - params.requestBodyStream || - (params.json && typeof params.json !== 'boolean') || - params.multipart - ) -} - -function safeStringify (obj, replacer) { - var ret - try { - ret = JSON.stringify(obj, replacer) - } catch (e) { - ret = jsonSafeStringify(obj, replacer) - } - return ret -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function isReadStream (rs) { - return rs.readable && rs.path && rs.mode -} - -function toBase64 (str) { - return Buffer.from(str || '', 'utf8').toString('base64') -} - -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} - -function version () { - var numbers = process.version.replace('v', '').split('.') - return { - major: parseInt(numbers[0], 10), - minor: parseInt(numbers[1], 10), - patch: parseInt(numbers[2], 10) - } -} - -exports.paramsHaveRequestBody = paramsHaveRequestBody -exports.safeStringify = safeStringify -exports.md5 = md5 -exports.isReadStream = isReadStream -exports.toBase64 = toBase64 -exports.copy = copy -exports.version = version -exports.defer = defer - - -/***/ }), -/* 152 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var Stream = __webpack_require__(413).Stream; -var util = __webpack_require__(669); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; - - -/***/ }), -/* 153 */, -/* 154 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_contains(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($nonEmptySchema) { - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (' + ($nextValid) + ') break; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; - } else { - out += ' if (' + ($data) + '.length == 0) {'; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should contain a valid item\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - if ($nonEmptySchema) { - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - } - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - - -/***/ }), -/* 155 */, -/* 156 */, -/* 157 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(887); -var step = __webpack_require__(423); -var Iterators = __webpack_require__(907); -var toIObject = __webpack_require__(78); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(103)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 158 */ -/***/ (function(module) { - -module.exports = {"author":{"name":"Jeremy Stashewsky","email":"jstash@gmail.com","website":"https://github.com/stash"},"contributors":[{"name":"Alexander Savin","website":"https://github.com/apsavin"},{"name":"Ian Livingstone","website":"https://github.com/ianlivingstone"},{"name":"Ivan Nikulin","website":"https://github.com/inikulin"},{"name":"Lalit Kapoor","website":"https://github.com/lalitkapoor"},{"name":"Sam Thompson","website":"https://github.com/sambthompson"},{"name":"Sebastian Mayr","website":"https://github.com/Sebmaster"}],"license":"BSD-3-Clause","name":"tough-cookie","description":"RFC6265 Cookies and Cookie Jar for node.js","keywords":["HTTP","cookie","cookies","set-cookie","cookiejar","jar","RFC6265","RFC2965"],"version":"2.4.3","homepage":"https://github.com/salesforce/tough-cookie","repository":{"type":"git","url":"git://github.com/salesforce/tough-cookie.git"},"bugs":{"url":"https://github.com/salesforce/tough-cookie/issues"},"main":"./lib/cookie","files":["lib"],"scripts":{"test":"vows test/*_test.js","cover":"nyc --reporter=lcov --reporter=html vows test/*_test.js"},"engines":{"node":">=0.8"},"devDependencies":{"async":"^1.4.2","nyc":"^11.6.0","string.prototype.repeat":"^0.2.0","vows":"^0.8.1"},"dependencies":{"psl":"^1.1.24","punycode":"^1.4.1"}}; - -/***/ }), -/* 159 */, -/* 160 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate__limitItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 161 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js -var BigInteger = __webpack_require__(242).BigInteger -var Barrett = BigInteger.prototype.Barrett - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; -} - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.x.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.y.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - //this.curve.reduce(w); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); - this.reducer = new Barrett(this.q); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -function curveReduce(x) { - this.reducer.reduce(x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -function curveFpEncodePointHex(p) { - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var yHex = p.getY().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) { - xHex = "0" + xHex; - } - while (yHex.length < oLen) { - yHex = "0" + yHex; - } - return "04" + xHex + yHex; -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.reduce = curveReduce; -//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; -ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; - -// from: https://github.com/kaielvin/jsbn-ec-point-compression -ECCurveFp.prototype.decodePointHex = function(s) -{ - var yIsEven; - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - yIsEven = false; - case 3: - if(yIsEven == undefined) yIsEven = true; - var len = s.length - 2; - var xHex = s.substr(2, len); - var x = this.fromBigInteger(new BigInteger(xHex,16)); - var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); - var beta = alpha.sqrt(); - - if (beta == null) throw "Invalid point compression"; - - var betaValue = beta.toBigInteger(); - if (betaValue.testBit(0) != yIsEven) - { - // Use the other root - beta = this.fromBigInteger(this.getQ().subtract(betaValue)); - } - return new ECPointFp(this,x,beta); - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} -ECCurveFp.prototype.encodeCompressedPointHex = function(p) -{ - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) - xHex = "0" + xHex; - var yPrefix; - if(p.getY().toBigInteger().isEven()) yPrefix = "02"; - else yPrefix = "03"; - - return yPrefix + xHex; -} - - -ECFieldElementFp.prototype.getR = function() -{ - if(this.r != undefined) return this.r; - - this.r = null; - var bitLength = this.q.bitLength(); - if (bitLength > 128) - { - var firstWord = this.q.shiftRight(bitLength - 64); - if (firstWord.intValue() == -1) - { - this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); - } - } - return this.r; -} -ECFieldElementFp.prototype.modMult = function(x1,x2) -{ - return this.modReduce(x1.multiply(x2)); -} -ECFieldElementFp.prototype.modReduce = function(x) -{ - if (this.getR() != null) - { - var qLen = q.bitLength(); - while (x.bitLength() > (qLen + 1)) - { - var u = x.shiftRight(qLen); - var v = x.subtract(u.shiftLeft(qLen)); - if (!this.getR().equals(BigInteger.ONE)) - { - u = u.multiply(this.getR()); - } - x = u.add(v); - } - while (x.compareTo(q) >= 0) - { - x = x.subtract(q); - } - } - else - { - x = x.mod(q); - } - return x; -} -ECFieldElementFp.prototype.sqrt = function() -{ - if (!this.q.testBit(0)) throw "unsupported"; - - // p mod 4 == 3 - if (this.q.testBit(1)) - { - var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); - return z.square().equals(this) ? z : null; - } - - // p mod 4 == 1 - var qMinusOne = this.q.subtract(BigInteger.ONE); - - var legendreExponent = qMinusOne.shiftRight(1); - if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) - { - return null; - } - - var u = qMinusOne.shiftRight(2); - var k = u.shiftLeft(1).add(BigInteger.ONE); - - var Q = this.x; - var fourQ = modDouble(modDouble(Q)); - - var U, V; - do - { - var P; - do - { - P = new BigInteger(this.q.bitLength(), new SecureRandom()); - } - while (P.compareTo(this.q) >= 0 - || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); - - var result = this.lucasSequence(P, Q, k); - U = result[0]; - V = result[1]; - - if (this.modMult(V, V).equals(fourQ)) - { - // Integer division by 2, mod q - if (V.testBit(0)) - { - V = V.add(q); - } - - V = V.shiftRight(1); - - return new ECFieldElementFp(q,V); - } - } - while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); - - return null; -} -ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) -{ - var n = k.bitLength(); - var s = k.getLowestSetBit(); - - var Uh = BigInteger.ONE; - var Vl = BigInteger.TWO; - var Vh = P; - var Ql = BigInteger.ONE; - var Qh = BigInteger.ONE; - - for (var j = n - 1; j >= s + 1; --j) - { - Ql = this.modMult(Ql, Qh); - - if (k.testBit(j)) - { - Qh = this.modMult(Ql, Q); - Uh = this.modMult(Uh, Vh); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); - } - else - { - Qh = Ql; - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - } - } - - Ql = this.modMult(Ql, Qh); - Qh = this.modMult(Ql, Q); - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Ql = this.modMult(Ql, Qh); - - for (var j = 1; j <= s; ++j) - { - Uh = this.modMult(Uh, Vl); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - Ql = this.modMult(Ql, Ql); - } - - return [ Uh, Vl ]; -} - -var exports = { - ECCurveFp: ECCurveFp, - ECPointFp: ECPointFp, - ECFieldElementFp: ECFieldElementFp -} - -module.exports = exports - - -/***/ }), -/* 162 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var spacesGroup = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; -var _default = spacesGroup; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 163 */, -/* 164 */, -/* 165 */, -/* 166 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -__webpack_require__(599); - -__webpack_require__(124); - -__webpack_require__(157); - -__webpack_require__(684); - -__webpack_require__(954); - -var _configs = _interopRequireDefault(__webpack_require__(125)); - -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - -var _getCharacterWeight = _interopRequireDefault(__webpack_require__(41)); - -var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); - -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); - -var _twemojiParser = __webpack_require__(175); - -var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// TODO: WEB-19861 Replace with public package after it is open sourced - -/** - * [parseTweet description] - * @param {string} text tweet text to parse - * @param {Object} options config options to pass - * @return {Object} Fields in response described below: - * - * Response fields: - * weightedLength {int} the weighted length of tweet based on weights specified in the config - * valid {bool} If tweet is valid - * permillage {float} permillage of the tweet over the max length specified in config - * validRangeStart {int} beginning of valid text - * validRangeEnd {int} End index of valid part of the tweet text (inclusive) in utf16 - * displayRangeStart {int} beginning index of display text - * displayRangeEnd {int} end index of display text (inclusive) in utf16 - */ -var parseTweet = function parseTweet() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - var mergedOptions = Object.keys(options).length ? options : _configs["default"].defaults; - var defaultWeight = mergedOptions.defaultWeight, - emojiParsingEnabled = mergedOptions.emojiParsingEnabled, - scale = mergedOptions.scale, - maxWeightedTweetLength = mergedOptions.maxWeightedTweetLength, - transformedURLLength = mergedOptions.transformedURLLength; - var normalizedText = typeof String.prototype.normalize === 'function' ? text.normalize() : text; // Hash all entities by their startIndex for fast lookup - - var urlEntitiesMap = transformEntitiesToHash((0, _extractUrlsWithIndices["default"])(normalizedText)); - var emojiEntitiesMap = emojiParsingEnabled ? transformEntitiesToHash((0, _twemojiParser.parse)(normalizedText)) : []; - var tweetLength = normalizedText.length; - var weightedLength = 0; - var validDisplayIndex = 0; - var valid = true; // Go through every character and calculate weight - - for (var charIndex = 0; charIndex < tweetLength; charIndex++) { - // If a url begins at the specified index handle, add constant length - if (urlEntitiesMap[charIndex]) { - var _urlEntitiesMap$charI = urlEntitiesMap[charIndex], - url = _urlEntitiesMap$charI.url, - indices = _urlEntitiesMap$charI.indices; - weightedLength += transformedURLLength * scale; - charIndex += url.length - 1; - } else if (emojiParsingEnabled && emojiEntitiesMap[charIndex]) { - var _emojiEntitiesMap$cha = emojiEntitiesMap[charIndex], - emoji = _emojiEntitiesMap$cha.text, - _indices = _emojiEntitiesMap$cha.indices; - weightedLength += defaultWeight; - charIndex += emoji.length - 1; - } else { - charIndex += isSurrogatePair(normalizedText, charIndex) ? 1 : 0; - weightedLength += (0, _getCharacterWeight["default"])(normalizedText.charAt(charIndex), mergedOptions); - } // Only test for validity of character if it is still valid - - - if (valid) { - valid = !(0, _hasInvalidCharacters["default"])(normalizedText.substring(charIndex, charIndex + 1)); - } - - if (valid && weightedLength <= maxWeightedTweetLength * scale) { - validDisplayIndex = charIndex; - } - } - - weightedLength = weightedLength / scale; - valid = valid && weightedLength > 0 && weightedLength <= maxWeightedTweetLength; - var permillage = Math.floor(weightedLength / maxWeightedTweetLength * 1000); - var normalizationOffset = text.length - normalizedText.length; - validDisplayIndex += normalizationOffset; - return { - weightedLength: weightedLength, - valid: valid, - permillage: permillage, - validRangeStart: 0, - validRangeEnd: validDisplayIndex, - displayRangeStart: 0, - displayRangeEnd: text.length > 0 ? text.length - 1 : 0 - }; -}; - -var transformEntitiesToHash = function transformEntitiesToHash(entities) { - return entities.reduce(function (map, entity) { - map[entity.indices[0]] = entity; - return map; - }, {}); -}; - -var isSurrogatePair = function isSurrogatePair(text, cIndex) { - // Test if a character is the beginning of a surrogate pair - if (cIndex < text.length - 1) { - var c = text.charCodeAt(cIndex); - var cNext = text.charCodeAt(cIndex + 1); - return 0xd800 <= c && c <= 0xdbff && 0xdc00 <= cNext && cNext <= 0xdfff; - } - - return false; -}; - -var _default = parseTweet; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 167 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_anyOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), -/* 168 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -function resolveYamlSet(data) { - if (data === null) return true; - - var key, object = data; - - for (key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - - return true; -} - -function constructYamlSet(data) { - return data !== null ? data : {}; -} - -module.exports = new Type('tag:yaml.org,2002:set', { - kind: 'mapping', - resolve: resolveYamlSet, - construct: constructYamlSet -}); - - -/***/ }), -/* 169 */, -/* 170 */, -/* 171 */, -/* 172 */, -/* 173 */, -/* 174 */, -/* 175 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.TypeName = undefined; -exports.parse = parse; -exports.toCodePoints = toCodePoints; - -var _regex = __webpack_require__(562); - -var _regex2 = _interopRequireDefault(_regex); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var TypeName = exports.TypeName = 'emoji'; -// Copyright Twitter Inc. Licensed under MIT -// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md -function parse(text, options) { - var assetType = options && options.assetType ? options.assetType : 'svg'; - var getTwemojiUrl = options && options.buildUrl ? options.buildUrl : function (codepoints, assetType) { - return assetType === 'png' ? 'https://twemoji.maxcdn.com/2/72x72/' + codepoints + '.png' : 'https://twemoji.maxcdn.com/2/svg/' + codepoints + '.svg'; - }; - - var entities = []; - - _regex2.default.lastIndex = 0; - while (true) { - var result = _regex2.default.exec(text); - if (!result) { - break; - } - - var emojiText = result[0]; - var codepoints = toCodePoints(removeVS16s(emojiText)).join('-'); - - entities.push({ - url: codepoints ? getTwemojiUrl(codepoints, assetType) : '', - indices: [result.index, _regex2.default.lastIndex], - text: emojiText, - type: TypeName - }); - } - return entities; -} - -var vs16RegExp = /\uFE0F/g; -// avoid using a string literal like '\u200D' here because minifiers expand it inline -var zeroWidthJoiner = String.fromCharCode(0x200d); - -var removeVS16s = function removeVS16s(rawEmoji) { - return rawEmoji.indexOf(zeroWidthJoiner) < 0 ? rawEmoji.replace(vs16RegExp, '') : rawEmoji; -}; - -function toCodePoints(unicodeSurrogates) { - var points = []; - var char = 0; - var previous = 0; - var i = 0; - while (i < unicodeSurrogates.length) { - char = unicodeSurrogates.charCodeAt(i++); - if (previous) { - points.push((0x10000 + (previous - 0xd800 << 10) + (char - 0xdc00)).toString(16)); - previous = 0; - } else if (char > 0xd800 && char <= 0xdbff) { - previous = char; - } else { - points.push(char.toString(16)); - } - } - return points; -} - -/***/ }), -/* 176 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -exports.URL = __webpack_require__(880).interface; -exports.serializeURL = __webpack_require__(856).serializeURL; -exports.serializeURLOrigin = __webpack_require__(856).serializeURLOrigin; -exports.basicURLParse = __webpack_require__(856).basicURLParse; -exports.setTheUsername = __webpack_require__(856).setTheUsername; -exports.setThePassword = __webpack_require__(856).setThePassword; -exports.serializeHost = __webpack_require__(856).serializeHost; -exports.serializeInteger = __webpack_require__(856).serializeInteger; -exports.parseURL = __webpack_require__(856).parseURL; - - -/***/ }), -/* 177 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -exports.checkBypass = exports.getProxyUrl = void 0; -function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === 'https:'; - if (checkBypass(reqUrl)) { - return undefined; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env['https_proxy'] || process.env['HTTPS_PROXY']; - } - else { - return process.env['http_proxy'] || process.env['HTTP_PROXY']; - } - })(); - if (proxyVar) { - return new URL(proxyVar); - } - else { - return undefined; - } -} -exports.getProxyUrl = getProxyUrl; -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } - else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } - else if (reqUrl.protocol === 'https:') { - reqPort = 443; - } - // Format the request hostname and hostname with port - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (const upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { - return true; - } - } - return false; -} -exports.checkBypass = checkBypass; -//# sourceMappingURL=proxy.js.map - -/***/ }), -/* 178 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validDomainName = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/, { - validDomainChars: _validDomainChars["default"] -}); -var _default = validDomainName; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 179 */, -/* 180 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlQuery = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlQuery; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 181 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(590); - -__webpack_require__(94); - -__webpack_require__(684); - -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var BOOLEAN_ATTRIBUTES = { - disabled: true, - readonly: true, - multiple: true, - checked: true -}; - -function _default(attributes) { - var htmlAttrs = ''; - - for (var k in attributes) { - var v = attributes[k]; - - if (BOOLEAN_ATTRIBUTES[k]) { - v = v ? k : null; - } - - if (v == null) { - continue; - } - - htmlAttrs += " ".concat((0, _htmlEscape["default"])(k), "=\"").concat((0, _htmlEscape["default"])(v.toString()), "\""); - } - - return htmlAttrs; -} - -module.exports = exports.default; - -/***/ }), -/* 182 */, -/* 183 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _atSigns = _interopRequireDefault(__webpack_require__(1)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _spaces = _interopRequireDefault(__webpack_require__(61)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validReply = (0, _regexSupplant["default"])(/^(?:#{spaces})*#{atSigns}([a-zA-Z0-9_]{1,20})/, { - atSigns: _atSigns["default"], - spaces: _spaces["default"] -}); -var _default = validReply; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 184 */, -/* 185 */, -/* 186 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - - -var loader = __webpack_require__(466); -var dumper = __webpack_require__(844); - - -function renamed(from, to) { - return function () { - throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + - 'Use yaml.' + to + ' instead, which is now safe by default.'); - }; -} - - -module.exports.Type = __webpack_require__(755); -module.exports.Schema = __webpack_require__(863); -module.exports.FAILSAFE_SCHEMA = __webpack_require__(308); -module.exports.JSON_SCHEMA = __webpack_require__(407); -module.exports.CORE_SCHEMA = __webpack_require__(77); -module.exports.DEFAULT_SCHEMA = __webpack_require__(344); -module.exports.load = loader.load; -module.exports.loadAll = loader.loadAll; -module.exports.dump = dumper.dump; -module.exports.YAMLException = __webpack_require__(652); - -// Re-export all types in case user wants to create custom schema -module.exports.types = { - binary: __webpack_require__(848), - float: __webpack_require__(227), - map: __webpack_require__(778), - null: __webpack_require__(72), - pairs: __webpack_require__(224), - set: __webpack_require__(168), - timestamp: __webpack_require__(244), - bool: __webpack_require__(882), - int: __webpack_require__(707), - merge: __webpack_require__(36), - omap: __webpack_require__(919), - seq: __webpack_require__(503), - str: __webpack_require__(258) -}; - -// Removed functions from JS-YAML 3.0.x -module.exports.safeLoad = renamed('safeLoad', 'load'); -module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); -module.exports.safeDump = renamed('safeDump', 'dump'); - - -/***/ }), -/* 187 */, -/* 188 */, -/* 189 */ -/***/ (function(module) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 190 */, -/* 191 */ -/***/ (function(module) { - -module.exports = require("querystring"); - -/***/ }), -/* 192 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var iterate = __webpack_require__(97) - , initState = __webpack_require__(147) - , terminator = __webpack_require__(106) - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} - - -/***/ }), -/* 193 */, -/* 194 */, -/* 195 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var global = __webpack_require__(300); -var core = __webpack_require__(245); -var hide = __webpack_require__(609); -var redefine = __webpack_require__(976); -var ctx = __webpack_require__(743); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - // export native or passed - out = (own ? target : source)[key]; - // bind timers to global for call from export context - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // extend global - if (target) redefine(target, key, out, type & $export.U); - // export - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } -}; -global.core = core; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 196 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -// TODO: Completely remove this in v0.15. -if (!nacl.util) { - nacl.util = {}; - nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { - throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); - }; -} - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (true) { - // Node.js. - crypto = __webpack_require__(417); - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})( true && module.exports ? module.exports : (self.nacl = self.nacl || {})); - - -/***/ }), -/* 197 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -const usm = __webpack_require__(856); - -exports.implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; - - let parsedBase = null; - if (base !== undefined) { - parsedBase = usm.basicURLParse(base); - if (parsedBase === "failure") { - throw new TypeError("Invalid base URL"); - } - } - - const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } - - this._url = parsedURL; - - // TODO: query stuff - } - - get href() { - return usm.serializeURL(this._url); - } - - set href(v) { - const parsedURL = usm.basicURLParse(v); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } - - this._url = parsedURL; - } - - get origin() { - return usm.serializeURLOrigin(this._url); - } - - get protocol() { - return this._url.scheme + ":"; - } - - set protocol(v) { - usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); - } - - get username() { - return this._url.username; - } - - set username(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - usm.setTheUsername(this._url, v); - } - - get password() { - return this._url.password; - } - - set password(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - usm.setThePassword(this._url, v); - } - - get host() { - const url = this._url; - - if (url.host === null) { - return ""; - } - - if (url.port === null) { - return usm.serializeHost(url.host); - } - - return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); - } - - set host(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); - } - - get hostname() { - if (this._url.host === null) { - return ""; - } - - return usm.serializeHost(this._url.host); - } - - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); - } - - get port() { - if (this._url.port === null) { - return ""; - } - - return usm.serializeInteger(this._url.port); - } - - set port(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - if (v === "") { - this._url.port = null; - } else { - usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); - } - } - - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; - } - - if (this._url.path.length === 0) { - return ""; - } - - return "/" + this._url.path.join("/"); - } - - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - this._url.path = []; - usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); - } - - get search() { - if (this._url.query === null || this._url.query === "") { - return ""; - } - - return "?" + this._url.query; - } - - set search(v) { - // TODO: query stuff - - const url = this._url; - - if (v === "") { - url.query = null; - return; - } - - const input = v[0] === "?" ? v.substring(1) : v; - url.query = ""; - usm.basicURLParse(input, { url, stateOverride: "query" }); - } - - get hash() { - if (this._url.fragment === null || this._url.fragment === "") { - return ""; - } - - return "#" + this._url.fragment; - } - - set hash(v) { - if (v === "") { - this._url.fragment = null; - return; - } - - const input = v[0] === "#" ? v.substring(1) : v; - this._url.fragment = ""; - usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); - } - - toJSON() { - return this.href; - } -}; - - -/***/ }), -/* 198 */, -/* 199 */, -/* 200 */, -/* 201 */ -/***/ (function(module) { - -// populates missing values -module.exports = function(dst, src) { - - Object.keys(src).forEach(function(prop) - { - dst[prop] = dst[prop] || src[prop]; - }); - - return dst; -}; - - -/***/ }), -/* 202 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2016 Joyent, Inc. - -module.exports = Certificate; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var crypto = __webpack_require__(417); -var Fingerprint = __webpack_require__(400); -var Signature = __webpack_require__(575); -var errs = __webpack_require__(570); -var util = __webpack_require__(669); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var Identity = __webpack_require__(378); - -var formats = {}; -formats['openssh'] = __webpack_require__(596); -formats['x509'] = __webpack_require__(323); -formats['pem'] = __webpack_require__(995); - -var CertificateParseError = errs.CertificateParseError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Certificate(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.subjects, 'options.subjects'); - utils.assertCompatible(opts.subjects[0], Identity, [1, 0], - 'options.subjects'); - utils.assertCompatible(opts.subjectKey, Key, [1, 0], - 'options.subjectKey'); - utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer'); - if (opts.issuerKey !== undefined) { - utils.assertCompatible(opts.issuerKey, Key, [1, 0], - 'options.issuerKey'); - } - assert.object(opts.signatures, 'options.signatures'); - assert.buffer(opts.serial, 'options.serial'); - assert.date(opts.validFrom, 'options.validFrom'); - assert.date(opts.validUntil, 'optons.validUntil'); - - assert.optionalArrayOfString(opts.purposes, 'options.purposes'); - - this._hashCache = {}; - - this.subjects = opts.subjects; - this.issuer = opts.issuer; - this.subjectKey = opts.subjectKey; - this.issuerKey = opts.issuerKey; - this.signatures = opts.signatures; - this.serial = opts.serial; - this.validFrom = opts.validFrom; - this.validUntil = opts.validUntil; - this.purposes = opts.purposes; -} - -Certificate.formats = formats; - -Certificate.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'x509'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -Certificate.prototype.toString = function (format, options) { - if (format === undefined) - format = 'pem'; - return (this.toBuffer(format, options).toString()); -}; - -Certificate.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - type: 'certificate', - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Certificate.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - - var hash = crypto.createHash(algo). - update(this.toBuffer('x509')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Certificate.prototype.isExpired = function (when) { - if (when === undefined) - when = new Date(); - return (!((when.getTime() >= this.validFrom.getTime()) && - (when.getTime() < this.validUntil.getTime()))); -}; - -Certificate.prototype.isSignedBy = function (issuerCert) { - utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer'); - - if (!this.issuer.equals(issuerCert.subjects[0])) - return (false); - if (this.issuer.purposes && this.issuer.purposes.length > 0 && - this.issuer.purposes.indexOf('ca') === -1) { - return (false); - } - - return (this.isSignedByKey(issuerCert.subjectKey)); -}; - -Certificate.prototype.getExtension = function (keyOrOid) { - assert.string(keyOrOid, 'keyOrOid'); - var ext = this.getExtensions().filter(function (maybeExt) { - if (maybeExt.format === 'x509') - return (maybeExt.oid === keyOrOid); - if (maybeExt.format === 'openssh') - return (maybeExt.name === keyOrOid); - return (false); - })[0]; - return (ext); -}; - -Certificate.prototype.getExtensions = function () { - var exts = []; - var x509 = this.signatures.x509; - if (x509 && x509.extras && x509.extras.exts) { - x509.extras.exts.forEach(function (ext) { - ext.format = 'x509'; - exts.push(ext); - }); - } - var openssh = this.signatures.openssh; - if (openssh && openssh.exts) { - openssh.exts.forEach(function (ext) { - ext.format = 'openssh'; - exts.push(ext); - }); - } - return (exts); -}; - -Certificate.prototype.isSignedByKey = function (issuerKey) { - utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey'); - - if (this.issuerKey !== undefined) { - return (this.issuerKey. - fingerprint('sha512').matches(issuerKey)); - } - - var fmt = Object.keys(this.signatures)[0]; - var valid = formats[fmt].verify(this, issuerKey); - if (valid) - this.issuerKey = issuerKey; - return (valid); -}; - -Certificate.prototype.signWith = function (key) { - utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); - var fmts = Object.keys(formats); - var didOne = false; - for (var i = 0; i < fmts.length; ++i) { - if (fmts[i] !== 'pem') { - var ret = formats[fmts[i]].sign(this, key); - if (ret === true) - didOne = true; - } - } - if (!didOne) { - throw (new Error('Failed to sign the certificate for any ' + - 'available certificate formats')); - } -}; - -Certificate.createSelfSigned = function (subjectOrSubjects, key, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, PrivateKey, [1, 2], 'private key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - /* Self-signed certs are always CAs. */ - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - - /* - * If we weren't explicitly given any other purposes, do the sensible - * thing and add some basic ones depending on the subject type. - */ - if (purposes.length <= 3) { - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - } - - var cert = new Certificate({ - subjects: subjects, - issuer: subjects[0], - subjectKey: key.toPublic(), - issuerKey: key.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(key); - - return (cert); -}; - -Certificate.create = - function (subjectOrSubjects, key, issuer, issuerKey, options) { - var subjects; - if (Array.isArray(subjectOrSubjects)) - subjects = subjectOrSubjects; - else - subjects = [subjectOrSubjects]; - - assert.arrayOfObject(subjects); - subjects.forEach(function (subject) { - utils.assertCompatible(subject, Identity, [1, 0], 'subject'); - }); - - utils.assertCompatible(key, Key, [1, 0], 'key'); - if (PrivateKey.isPrivateKey(key)) - key = key.toPublic(); - utils.assertCompatible(issuer, Identity, [1, 0], 'issuer'); - utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key'); - - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalObject(options.validFrom, 'options.validFrom'); - assert.optionalObject(options.validUntil, 'options.validUntil'); - var validFrom = options.validFrom; - var validUntil = options.validUntil; - if (validFrom === undefined) - validFrom = new Date(); - if (validUntil === undefined) { - assert.optionalNumber(options.lifetime, 'options.lifetime'); - var lifetime = options.lifetime; - if (lifetime === undefined) - lifetime = 10*365*24*3600; - validUntil = new Date(); - validUntil.setTime(validUntil.getTime() + lifetime*1000); - } - assert.optionalBuffer(options.serial, 'options.serial'); - var serial = options.serial; - if (serial === undefined) - serial = Buffer.from('0000000000000001', 'hex'); - - var purposes = options.purposes; - if (purposes === undefined) - purposes = []; - - if (purposes.indexOf('signature') === -1) - purposes.push('signature'); - - if (options.ca === true) { - if (purposes.indexOf('ca') === -1) - purposes.push('ca'); - if (purposes.indexOf('crl') === -1) - purposes.push('crl'); - } - - var hostSubjects = subjects.filter(function (subject) { - return (subject.type === 'host'); - }); - var userSubjects = subjects.filter(function (subject) { - return (subject.type === 'user'); - }); - if (hostSubjects.length > 0) { - if (purposes.indexOf('serverAuth') === -1) - purposes.push('serverAuth'); - } - if (userSubjects.length > 0) { - if (purposes.indexOf('clientAuth') === -1) - purposes.push('clientAuth'); - } - if (userSubjects.length > 0 || hostSubjects.length > 0) { - if (purposes.indexOf('keyAgreement') === -1) - purposes.push('keyAgreement'); - if (key.type === 'rsa' && - purposes.indexOf('encryption') === -1) - purposes.push('encryption'); - } - - var cert = new Certificate({ - subjects: subjects, - issuer: issuer, - subjectKey: key, - issuerKey: issuerKey.toPublic(), - signatures: {}, - serial: serial, - validFrom: validFrom, - validUntil: validUntil, - purposes: purposes - }); - cert.signWith(issuerKey); - - return (cert); -}; - -Certificate.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - return (k); - } catch (e) { - throw (new CertificateParseError(options.filename, format, e)); - } -}; - -Certificate.isCertificate = function (obj, ver) { - return (utils.isCompatible(obj, Certificate, ver)); -}; - -/* - * API versions for Certificate: - * [1,0] -- initial ver - * [1,1] -- openssh format now unpacks extensions - */ -Certificate.prototype._sshpkApiVersion = [1, 1]; - -Certificate._oldVersionDetect = function (obj) { - return ([1, 0]); -}; - - -/***/ }), -/* 203 */ -/***/ (function(module) { - -"use strict"; -/*! - * @description Recursive object extending - * @author Viacheslav Lotsmanov - * @license MIT - * - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Viacheslav Lotsmanov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - - -function isSpecificValue(val) { - return ( - val instanceof Buffer - || val instanceof Date - || val instanceof RegExp - ) ? true : false; -} - -function cloneSpecificValue(val) { - if (val instanceof Buffer) { - var x = Buffer.alloc - ? Buffer.alloc(val.length) - : new Buffer(val.length); - val.copy(x); - return x; - } else if (val instanceof Date) { - return new Date(val.getTime()); - } else if (val instanceof RegExp) { - return new RegExp(val); - } else { - throw new Error('Unexpected situation'); - } -} - -/** - * Recursive cloning array. - */ -function deepCloneArray(arr) { - var clone = []; - arr.forEach(function (item, index) { - if (typeof item === 'object' && item !== null) { - if (Array.isArray(item)) { - clone[index] = deepCloneArray(item); - } else if (isSpecificValue(item)) { - clone[index] = cloneSpecificValue(item); - } else { - clone[index] = deepExtend({}, item); - } - } else { - clone[index] = item; - } - }); - return clone; -} - -function safeGetProperty(object, property) { - return property === '__proto__' ? undefined : object[property]; -} - -/** - * Extening object that entered in first argument. - * - * Returns extended object or false if have no target object or incorrect type. - * - * If you wish to clone source object (without modify it), just use empty new - * object as first argument, like this: - * deepExtend({}, yourObj_1, [yourObj_N]); - */ -var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { - if (arguments.length < 1 || typeof arguments[0] !== 'object') { - return false; - } - - if (arguments.length < 2) { - return arguments[0]; - } - - var target = arguments[0]; - - // convert arguments to array and cut off target object - var args = Array.prototype.slice.call(arguments, 1); - - var val, src, clone; - - args.forEach(function (obj) { - // skip argument if isn't an object, is null, or is an array - if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) { - return; - } - - Object.keys(obj).forEach(function (key) { - src = safeGetProperty(target, key); // source value - val = safeGetProperty(obj, key); // new value - - // recursion prevention - if (val === target) { - return; - - /** - * if new value isn't object then just overwrite by new value - * instead of extending. - */ - } else if (typeof val !== 'object' || val === null) { - target[key] = val; - return; - - // just clone arrays (and recursive clone objects inside) - } else if (Array.isArray(val)) { - target[key] = deepCloneArray(val); - return; - - // custom cloning and overwrite for specific objects - } else if (isSpecificValue(val)) { - target[key] = cloneSpecificValue(val); - return; - - // overwrite by new value if source isn't object or array - } else if (typeof src !== 'object' || src === null || Array.isArray(src)) { - target[key] = deepExtend({}, val); - return; - - // source value and new value is objects both, extending... - } else { - target[key] = deepExtend(src, val); - return; - } - }); - }); - - return target; -}; - - -/***/ }), -/* 204 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _validate = _interopRequireDefault(__webpack_require__(634)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} - -var _default = parse; -exports.default = _default; - -/***/ }), -/* 205 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); - -var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Valid end-of-path chracters (so /foo. does not gobble the period). -// 1. Allow =&# for empty URL parameters and other URL-join artifacts -var validUrlPathEndingChars = (0, _regexSupplant["default"])(/[\+\-a-z#{cyrillicLettersAndMarks}0-9=_#\/#{latinAccentChars}]|(?:#{validUrlBalancedParens})/i, { - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - latinAccentChars: _latinAccentChars["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"] -}); -var _default = validUrlPathEndingChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 206 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var has = __webpack_require__(975); -var toIObject = __webpack_require__(78); -var arrayIndexOf = __webpack_require__(786)(false); -var IE_PROTO = __webpack_require__(331)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 207 */, -/* 208 */, -/* 209 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -exports.f = __webpack_require__(621); - - -/***/ }), -/* 210 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(195); -var aFunction = __webpack_require__(569); -var toObject = __webpack_require__(230); -var fails = __webpack_require__(971); -var $sort = [].sort; -var test = [1, 2, 3]; - -$export($export.P + $export.F * (fails(function () { - // IE8- - test.sort(undefined); -}) || !fails(function () { - // V8 bug - test.sort(null); - // Old WebKit -}) || !__webpack_require__(482)($sort)), 'Array', { - // 22.1.3.25 Array.prototype.sort(comparefn) - sort: function sort(comparefn) { - return comparefn === undefined - ? $sort.call(toObject(this)) - : $sort.call(toObject(this), aFunction(comparefn)); - } -}); - - -/***/ }), -/* 211 */ -/***/ (function(module) { - -module.exports = require("https"); - -/***/ }), -/* 212 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_validate(it, $keyword, $ruleType) { - var out = ''; - var $async = it.schema.$async === true, - $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), - $id = it.self._getId(it.schema); - if (it.opts.strictKeywords) { - var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); - if ($unknownKwd) { - var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; - if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); - else throw new Error($keywordsMsg); - } - } - if (it.isTop) { - out += ' var validate = '; - if ($async) { - it.async = true; - out += 'async '; - } - out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; - if ($id && (it.opts.sourceCode || it.opts.processCode)) { - out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; - } - } - if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { - var $keyword = 'false schema'; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - if (it.schema === false) { - if (it.isTop) { - $breakOnError = true; - } else { - out += ' var ' + ($valid) + ' = false; '; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'boolean schema is false\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - if (it.isTop) { - if ($async) { - out += ' return data; '; - } else { - out += ' validate.errors = null; return true; '; - } - } else { - out += ' var ' + ($valid) + ' = true; '; - } - } - if (it.isTop) { - out += ' }; return validate; '; - } - return out; - } - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - it.dataPathArr = [""]; - if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored in the schema root'; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - out += ' var vErrors = null; '; - out += ' var errors = 0; '; - out += ' if (rootData === undefined) rootData = data; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if ($id) it.baseId = it.resolve.url(it.baseId, $id); - if ($async && !it.async) throw new Error('async schema in sync schema'); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = ''; - var $errorKeyword; - var $typeSchema = it.schema.type, - $typeIsArray = Array.isArray($typeSchema); - if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { - if ($typeIsArray) { - if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null'); - } else if ($typeSchema != 'null') { - $typeSchema = [$typeSchema, 'null']; - $typeIsArray = true; - } - } - if ($typeIsArray && $typeSchema.length == 1) { - $typeSchema = $typeSchema[0]; - $typeIsArray = false; - } - if (it.schema.$ref && $refKeywords) { - if (it.opts.extendRefs == 'fail') { - throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); - } else if (it.opts.extendRefs !== true) { - $refKeywords = false; - it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - } - } - if (it.schema.$comment && it.opts.$comment) { - out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); - } - if ($typeSchema) { - if (it.opts.coerceTypes) { - var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); - } - var $rulesGroup = it.RULES.types[$typeSchema]; - if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { '; - if ($coerceToTypes) { - var $dataType = 'dataType' + $lvl, - $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; '; - if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } '; - } - out += ' if (' + ($coerced) + ' !== undefined) ; '; - var arr1 = $coerceToTypes; - if (arr1) { - var $type, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $type = arr1[$i += 1]; - if ($type == 'string') { - out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; - } else if ($type == 'number' || $type == 'integer') { - out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; - if ($type == 'integer') { - out += ' && !(' + ($data) + ' % 1)'; - } - out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; - } else if ($type == 'boolean') { - out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; - } else if ($type == 'null') { - out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; - } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; - } - } - } - out += ' else { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } if (' + ($coerced) + ' !== undefined) { '; - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' ' + ($data) + ' = ' + ($coerced) + '; '; - if (!$dataLvl) { - out += 'if (' + ($parentData) + ' !== undefined)'; - } - out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' } '; - } - } - if (it.schema.$ref && !$refKeywords) { - out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; - if ($breakOnError) { - out += ' } if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } else { - var arr2 = it.RULES; - if (arr2) { - var $rulesGroup, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $rulesGroup = arr2[i2 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { '; - } - if (it.opts.useDefaults) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr4 = it.schema.items; - if (arr4) { - var $sch, $i = -1, - l4 = arr4.length - 1; - while ($i < l4) { - $sch = arr4[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } - } - var arr5 = $rulesGroup.rules; - if (arr5) { - var $rule, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $rule = arr5[i5 += 1]; - if ($shouldUseRule($rule)) { - var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); - if ($code) { - out += ' ' + ($code) + ' '; - if ($breakOnError) { - $closingBraces1 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces1) + ' '; - $closingBraces1 = ''; - } - if ($rulesGroup.type) { - out += ' } '; - if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { - out += ' else { '; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - } - if ($breakOnError) { - out += ' if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces2) + ' '; - } - if ($top) { - if ($async) { - out += ' if (errors === 0) return data; '; - out += ' else throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; '; - out += ' return errors === 0; '; - } - out += ' }; return validate;'; - } else { - out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; - } - - function $shouldUseGroup($rulesGroup) { - var rules = $rulesGroup.rules; - for (var i = 0; i < rules.length; i++) - if ($shouldUseRule(rules[i])) return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); - } - - function $ruleImplementsSomeKeyword($rule) { - var impl = $rule.implements; - for (var i = 0; i < impl.length; i++) - if (it.schema[impl[i]] !== undefined) return true; - } - return out; -} - - -/***/ }), -/* 213 */ -/***/ (function(module) { - -module.exports = require("punycode"); - -/***/ }), -/* 214 */, -/* 215 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var at = __webpack_require__(289)(true); - - // `AdvanceStringIndex` abstract operation -// https://tc39.github.io/ecma262/#sec-advancestringindex -module.exports = function (S, index, unicode) { - return index + (unicode ? at(S, index).length : 1); -}; - - -/***/ }), -/* 216 */, -/* 217 */, -/* 218 */, -/* 219 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = createCheckRun; - -const { autoLink } = __webpack_require__(914); - -const parseTweetFileContent = __webpack_require__(746); - -async function createCheckRun( - { octokit, payload, startedAt, toolkit, dir }, - newTweets -) { - const parsedTweets = newTweets.map((rawTweet) => { - try { - return parseTweetFileContent(rawTweet, dir); - } catch (error) { - return { - error: error.message, - valid: false, - text: rawTweet, - }; - } - }); - - const allTweetsValid = parsedTweets.every((tweet) => tweet.valid); - - // Check runs cannot be created if the pull request was created by a fork, - // so we just log out the result. - // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#permissions-for-the-github_token - if (payload.pull_request.head.repo.fork) { - for (const tweet of parsedTweets) { - if (tweet.valid) { - toolkit.info(`### ✅ Valid\n\n${tweet.text}`); - } else { - toolkit.info( - `### ❌ Invalid\n\n${tweet.text}\n\n${tweet.error || "Unknown error"}` - ); - } - } - process.exit(allTweetsValid ? 0 : 1); - } - - const response = await octokit.request( - "POST /repos/:owner/:repo/check-runs", - { - headers: { - accept: "application/vnd.github.antiope-preview+json", - }, - owner: payload.repository.owner.login, - repo: payload.repository.name, - name: "preview", - head_sha: payload.pull_request.head.sha, - started_at: startedAt, - completed_at: new Date().toISOString(), - status: "completed", - conclusion: allTweetsValid ? "success" : "failure", - output: { - title: `${parsedTweets.length} tweet(s)`, - summary: parsedTweets.map(tweetToCheckRunSummary).join("\n\n---\n\n"), - }, - } - ); - - toolkit.info(`check run created: ${response.data.html_url}`); -} - -function tweetToCheckRunSummary(tweet) { - let text = autoLink(tweet.text) - .replace(/(^|\n)/g, "$1> ") - .replace(/(^|\n)> (\n|$)/g, "$1>$2"); - - if (!tweet.valid) - return `### ❌ Invalid\n\n${text}\n\n${tweet.error || "Unknown error"}`; - - if (tweet.poll) - text += - "\n\nThe tweet includes a poll:\n\n> 🔘 " + tweet.poll.join("\n> 🔘 "); - return `### ✅ Valid\n\n${text}`; -} - - -/***/ }), -/* 220 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var caseless = __webpack_require__(254) -var uuid = __webpack_require__(826) -var helpers = __webpack_require__(151) - -var md5 = helpers.md5 -var toBase64 = helpers.toBase64 - -function Auth (request) { - // define all public properties here - this.request = request - this.hasAuth = false - this.sentAuth = false - this.bearerToken = null - this.user = null - this.pass = null -} - -Auth.prototype.basic = function (user, pass, sendImmediately) { - var self = this - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - self.request.emit('error', new Error('auth() received invalid user or password')) - } - self.user = user - self.pass = pass - self.hasAuth = true - var header = user + ':' + (pass || '') - if (sendImmediately || typeof sendImmediately === 'undefined') { - var authHeader = 'Basic ' + toBase64(header) - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.bearer = function (bearer, sendImmediately) { - var self = this - self.bearerToken = bearer - self.hasAuth = true - if (sendImmediately || typeof sendImmediately === 'undefined') { - if (typeof bearer === 'function') { - bearer = bearer() - } - var authHeader = 'Bearer ' + (bearer || '') - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.digest = function (method, path, authHeader) { - // TODO: More complete implementation of RFC 2617. - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var self = this - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) { - break - } - challenge[match[1]] = match[2] || match[3] - } - - /** - * RFC 2617: handle both MD5 and MD5-sess algorithms. - * - * If the algorithm directive's value is "MD5" or unspecified, then HA1 is - * HA1=MD5(username:realm:password) - * If the algorithm directive's value is "MD5-sess", then HA1 is - * HA1=MD5(MD5(username:realm:password):nonce:cnonce) - */ - var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) { - var ha1 = md5(user + ':' + realm + ':' + pass) - if (algorithm && algorithm.toLowerCase() === 'md5-sess') { - return md5(ha1 + ':' + nonce + ':' + cnonce) - } else { - return ha1 - } - } - - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce) - var ha2 = md5(method + ':' + path) - var digestResponse = qop - ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) - : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self.user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (authValues[k]) { - if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.sentAuth = true - return authHeader -} - -Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { - var self = this - var request = self.request - - var authHeader - if (bearer === undefined && user === undefined) { - self.request.emit('error', new Error('no auth mechanism defined')) - } else if (bearer !== undefined) { - authHeader = self.bearer(bearer, sendImmediately) - } else { - authHeader = self.basic(user, pass, sendImmediately) - } - if (authHeader) { - request.setHeader('authorization', authHeader) - } -} - -Auth.prototype.onResponse = function (response) { - var self = this - var request = self.request - - if (!self.hasAuth || self.sentAuth) { return null } - - var c = caseless(response.headers) - - var authHeader = c.get('www-authenticate') - var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() - request.debug('reauth', authVerb) - - switch (authVerb) { - case 'basic': - return self.basic(self.user, self.pass, true) - - case 'bearer': - return self.bearer(self.bearerToken, true) - - case 'digest': - return self.digest(request.method, request.path, authHeader) - } -} - -exports.Auth = Auth - - -/***/ }), -/* 221 */, -/* 222 */ -/***/ (function(module) { - -module.exports = {"$id":"browser.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}; - -/***/ }), -/* 223 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var regexpExec = __webpack_require__(663); -__webpack_require__(195)({ - target: 'RegExp', - proto: true, - forced: regexpExec !== /./.exec -}, { - exec: regexpExec -}); - - -/***/ }), -/* 224 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -var _toString = Object.prototype.toString; - -function resolveYamlPairs(data) { - if (data === null) return true; - - var index, length, pair, keys, result, - object = data; - - result = new Array(object.length); - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - - if (_toString.call(pair) !== '[object Object]') return false; - - keys = Object.keys(pair); - - if (keys.length !== 1) return false; - - result[index] = [ keys[0], pair[keys[0]] ]; - } - - return true; -} - -function constructYamlPairs(data) { - if (data === null) return []; - - var index, length, pair, keys, result, - object = data; - - result = new Array(object.length); - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - - keys = Object.keys(pair); - - result[index] = [ keys[0], pair[keys[0]] ]; - } - - return result; -} - -module.exports = new Type('tag:yaml.org,2002:pairs', { - kind: 'sequence', - resolve: resolveYamlPairs, - construct: constructYamlPairs -}); - - -/***/ }), -/* 225 */, -/* 226 */ -/***/ (function(module) { - -module.exports = {"$id":"response.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["status","statusText","httpVersion","cookies","headers","content","redirectURL","headersSize","bodySize"],"properties":{"status":{"type":"integer"},"statusText":{"type":"string"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"content":{"$ref":"content.json#"},"redirectURL":{"type":"string"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}; - -/***/ }), -/* 227 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var common = __webpack_require__(701); -var Type = __webpack_require__(755); - -var YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$'); - -function resolveYamlFloat(data) { - if (data === null) return false; - - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { - return false; - } - - return true; -} - -function constructYamlFloat(data) { - var value, sign; - - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; - - if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1); - } - - if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - - } else if (value === '.nan') { - return NaN; - } - return sign * parseFloat(value, 10); -} - - -var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - -function representYamlFloat(object, style) { - var res; - - if (isNaN(object)) { - switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; - } - } else if (common.isNegativeZero(object)) { - return '-0.0'; - } - - res = object.toString(10); - - // JS stringifier can build scientific format without dots: 5e-100, - // while YAML requres dot: 5.e-100. Fix it with simple hack - - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; -} - -function isFloat(object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); -} - -module.exports = new Type('tag:yaml.org,2002:float', { - kind: 'scalar', - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: 'lowercase' -}); - - -/***/ }), -/* 228 */, -/* 229 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); - -var _astralNumerals = _interopRequireDefault(__webpack_require__(767)); - -var _atSigns = _interopRequireDefault(__webpack_require__(1)); - -var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); - -var _bmpNumerals = _interopRequireDefault(__webpack_require__(307)); - -var _cashtag = _interopRequireDefault(__webpack_require__(728)); - -var _codePoint = _interopRequireDefault(__webpack_require__(763)); - -var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); - -var _endHashtagMatch = _interopRequireDefault(__webpack_require__(69)); - -var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); - -var _extractUrl = _interopRequireDefault(__webpack_require__(342)); - -var _hashSigns = _interopRequireDefault(__webpack_require__(617)); - -var _hashtagAlpha = _interopRequireDefault(__webpack_require__(62)); - -var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); - -var _hashtagBoundary = _interopRequireDefault(__webpack_require__(38)); - -var _hashtagSpecialChars = _interopRequireDefault(__webpack_require__(906)); - -var _invalidChars = _interopRequireDefault(__webpack_require__(516)); - -var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); - -var _invalidDomainChars = _interopRequireDefault(__webpack_require__(265)); - -var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__webpack_require__(703)); - -var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); - -var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - -var _punct = _interopRequireDefault(__webpack_require__(412)); - -var _rtlChars = _interopRequireDefault(__webpack_require__(986)); - -var _spaces = _interopRequireDefault(__webpack_require__(61)); - -var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); - -var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); - -var _urlHasProtocol = _interopRequireDefault(__webpack_require__(654)); - -var _validAsciiDomain = _interopRequireDefault(__webpack_require__(745)); - -var _validateUrlAuthority = _interopRequireDefault(__webpack_require__(790)); - -var _validateUrlDecOctet = _interopRequireDefault(__webpack_require__(600)); - -var _validateUrlDomain = _interopRequireDefault(__webpack_require__(985)); - -var _validateUrlDomainSegment = _interopRequireDefault(__webpack_require__(729)); - -var _validateUrlDomainTld = _interopRequireDefault(__webpack_require__(872)); - -var _validateUrlFragment = _interopRequireDefault(__webpack_require__(266)); - -var _validateUrlHost = _interopRequireDefault(__webpack_require__(612)); - -var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); - -var _validateUrlIpv = _interopRequireDefault(__webpack_require__(115)); - -var _validateUrlIpv2 = _interopRequireDefault(__webpack_require__(871)); - -var _validateUrlPath = _interopRequireDefault(__webpack_require__(399)); - -var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); - -var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); - -var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); - -var _validateUrlQuery = _interopRequireDefault(__webpack_require__(180)); - -var _validateUrlScheme = _interopRequireDefault(__webpack_require__(861)); - -var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); - -var _validateUrlSubDomainSegment = _interopRequireDefault(__webpack_require__(370)); - -var _validateUrlUnencoded = _interopRequireDefault(__webpack_require__(753)); - -var _validateUrlUnicodeAuthority = _interopRequireDefault(__webpack_require__(44)); - -var _validateUrlUnicodeDomain = _interopRequireDefault(__webpack_require__(943)); - -var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__webpack_require__(284)); - -var _validateUrlUnicodeDomainTld = _interopRequireDefault(__webpack_require__(24)); - -var _validateUrlUnicodeHost = _interopRequireDefault(__webpack_require__(146)); - -var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__webpack_require__(382)); - -var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); - -var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); - -var _validCashtag = _interopRequireDefault(__webpack_require__(661)); - -var _validCCTLD = _interopRequireDefault(__webpack_require__(662)); - -var _validDomain = _interopRequireDefault(__webpack_require__(574)); - -var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); - -var _validDomainName = _interopRequireDefault(__webpack_require__(178)); - -var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); - -var _validGTLD = _interopRequireDefault(__webpack_require__(79)); - -var _validHashtag = _interopRequireDefault(__webpack_require__(616)); - -var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); - -var _validMentionPrecedingChars = _interopRequireDefault(__webpack_require__(405)); - -var _validPortNumber = _interopRequireDefault(__webpack_require__(547)); - -var _validPunycode = _interopRequireDefault(__webpack_require__(131)); - -var _validReply = _interopRequireDefault(__webpack_require__(183)); - -var _validSubdomain = _interopRequireDefault(__webpack_require__(531)); - -var _validTcoUrl = _interopRequireDefault(__webpack_require__(341)); - -var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); - -var _validUrlPath = _interopRequireDefault(__webpack_require__(671)); - -var _validUrlPathEndingChars = _interopRequireDefault(__webpack_require__(205)); - -var _validUrlPrecedingChars = _interopRequireDefault(__webpack_require__(533)); - -var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); - -var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var _default = { - astralLetterAndMarks: _astralLetterAndMarks["default"], - astralNumerals: _astralNumerals["default"], - atSigns: _atSigns["default"], - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - bmpNumerals: _bmpNumerals["default"], - cashtag: _cashtag["default"], - codePoint: _codePoint["default"], - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - endHashtagMatch: _endHashtagMatch["default"], - endMentionMatch: _endMentionMatch["default"], - extractUrl: _extractUrl["default"], - hashSigns: _hashSigns["default"], - hashtagAlpha: _hashtagAlpha["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], - hashtagBoundary: _hashtagBoundary["default"], - hashtagSpecialChars: _hashtagSpecialChars["default"], - invalidChars: _invalidChars["default"], - invalidCharsGroup: _invalidCharsGroup["default"], - invalidDomainChars: _invalidDomainChars["default"], - invalidUrlWithoutProtocolPrecedingChars: _invalidUrlWithoutProtocolPrecedingChars["default"], - latinAccentChars: _latinAccentChars["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - punct: _punct["default"], - rtlChars: _rtlChars["default"], - spaces: _spaces["default"], - spacesGroup: _spacesGroup["default"], - urlHasHttps: _urlHasHttps["default"], - urlHasProtocol: _urlHasProtocol["default"], - validAsciiDomain: _validAsciiDomain["default"], - validateUrlAuthority: _validateUrlAuthority["default"], - validateUrlDecOctet: _validateUrlDecOctet["default"], - validateUrlDomain: _validateUrlDomain["default"], - validateUrlDomainSegment: _validateUrlDomainSegment["default"], - validateUrlDomainTld: _validateUrlDomainTld["default"], - validateUrlFragment: _validateUrlFragment["default"], - validateUrlHost: _validateUrlHost["default"], - validateUrlIp: _validateUrlIp["default"], - validateUrlIpv4: _validateUrlIpv["default"], - validateUrlIpv6: _validateUrlIpv2["default"], - validateUrlPath: _validateUrlPath["default"], - validateUrlPchar: _validateUrlPchar["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlPort: _validateUrlPort["default"], - validateUrlQuery: _validateUrlQuery["default"], - validateUrlScheme: _validateUrlScheme["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"], - validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], - validateUrlUnencoded: _validateUrlUnencoded["default"], - validateUrlUnicodeAuthority: _validateUrlUnicodeAuthority["default"], - validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"], - validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], - validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"], - validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], - validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlUserinfo: _validateUrlUserinfo["default"], - validCashtag: _validCashtag["default"], - validCCTLD: _validCCTLD["default"], - validDomain: _validDomain["default"], - validDomainChars: _validDomainChars["default"], - validDomainName: _validDomainName["default"], - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], - validGTLD: _validGTLD["default"], - validHashtag: _validHashtag["default"], - validMentionOrList: _validMentionOrList["default"], - validMentionPrecedingChars: _validMentionPrecedingChars["default"], - validPortNumber: _validPortNumber["default"], - validPunycode: _validPunycode["default"], - validReply: _validReply["default"], - validSubdomain: _validSubdomain["default"], - validTcoUrl: _validTcoUrl["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"], - validUrlPath: _validUrlPath["default"], - validUrlPathEndingChars: _validUrlPathEndingChars["default"], - validUrlPrecedingChars: _validUrlPrecedingChars["default"], - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] -}; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 230 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(805); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 231 */, -/* 232 */, -/* 233 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - - - -/** - * Module dependencies. - * @private - */ - -var db = __webpack_require__(972) -var extname = __webpack_require__(622).extname - -/** - * Module variables. - * @private - */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} - - -/***/ }), -/* 234 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(549); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var VALID_LIST_RE = (0, _regexSupplant["default"])(/^#{validMentionOrList}$/, { - validMentionOrList: _validMentionOrList["default"] -}); - -function _default(usernameList) { - var match = usernameList.match(VALID_LIST_RE); // Must have matched and had nothing before or after - - return !!(match && match[1] == '' && match[4]); -} - -module.exports = exports.default; - -/***/ }), -/* 235 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var nonBmpCodePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/gm; -var _default = nonBmpCodePairs; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 236 */, -/* 237 */, -/* 238 */, -/* 239 */, -/* 240 */, -/* 241 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); - -var pem = __webpack_require__(268); -var ssh = __webpack_require__(854); -var rfc4253 = __webpack_require__(538); -var dnssec = __webpack_require__(982); -var putty = __webpack_require__(624); - -var DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1'; - -function read(buf, options) { - if (typeof (buf) === 'string') { - if (buf.trim().match(/^[-]+[ ]*BEGIN/)) - return (pem.read(buf, options)); - if (buf.match(/^\s*ssh-[a-z]/)) - return (ssh.read(buf, options)); - if (buf.match(/^\s*ecdsa-/)) - return (ssh.read(buf, options)); - if (buf.match(/^putty-user-key-file-2:/i)) - return (putty.read(buf, options)); - if (findDNSSECHeader(buf)) - return (dnssec.read(buf, options)); - buf = Buffer.from(buf, 'binary'); - } else { - assert.buffer(buf); - if (findPEMHeader(buf)) - return (pem.read(buf, options)); - if (findSSHHeader(buf)) - return (ssh.read(buf, options)); - if (findPuTTYHeader(buf)) - return (putty.read(buf, options)); - if (findDNSSECHeader(buf)) - return (dnssec.read(buf, options)); - } - if (buf.readUInt32BE(0) < buf.length) - return (rfc4253.read(buf, options)); - throw (new Error('Failed to auto-detect format of key')); -} - -function findPuTTYHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) - ++offset; - if (offset + 22 <= buf.length && - buf.slice(offset, offset + 22).toString('ascii').toLowerCase() === - 'putty-user-key-file-2:') - return (true); - return (false); -} - -function findSSHHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) - ++offset; - if (offset + 4 <= buf.length && - buf.slice(offset, offset + 4).toString('ascii') === 'ssh-') - return (true); - if (offset + 6 <= buf.length && - buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-') - return (true); - return (false); -} - -function findPEMHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10)) - ++offset; - if (buf[offset] !== 45) - return (false); - while (offset < buf.length && - (buf[offset] === 45)) - ++offset; - while (offset < buf.length && - (buf[offset] === 32)) - ++offset; - if (offset + 5 > buf.length || - buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN') - return (false); - return (true); -} - -function findDNSSECHeader(buf) { - // private case first - if (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length) - return (false); - var headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length); - if (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX) - return (true); - - // public-key RFC3110 ? - // 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...' - // skip any comment-lines - if (typeof (buf) !== 'string') { - buf = buf.toString('ascii'); - } - var lines = buf.split('\n'); - var line = 0; - /* JSSTYLED */ - while (lines[line].match(/^\;/)) - line++; - if (lines[line].toString('ascii').match(/\. IN KEY /)) - return (true); - if (lines[line].toString('ascii').match(/\. IN DNSKEY /)) - return (true); - return (false); -} - -function write(key, options) { - throw (new Error('"auto" format cannot be used for writing')); -} - - -/***/ }), -/* 242 */ -/***/ (function(module, exports) { - -(function(){ - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - var inBrowser = typeof navigator !== "undefined"; - if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+this.DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // Copyright (c) 2005-2009 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Extended JavaScript BN functions, required for RSA private ops. - - // Version 1.1: new BigInteger("0", 10) returns "proper" zero - // Version 1.2: square() API, isProbablePrime fix - - // (public) - function bnClone() { var r = nbi(); this.copyTo(r); return r; } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - - // (public) return value as short (assumes DB>=16) - function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) alternate constructor - function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; - } - - function bnEquals(a) { return(this.compareTo(a)==0); } - function bnMin(a) { return(this.compareTo(a)<0)?this:a; } - function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - - // (protected) r = this op a (bitwise) - function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); - } - - // (public) this & a - function op_and(x,y) { return x&y; } - function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - - // (public) this | a - function op_or(x,y) { return x|y; } - function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - - // (public) this ^ a - function op_xor(x,y) { return x^y; } - function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - - // (public) this & ~a - function op_andnot(x,y) { return x&~y; } - function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - - // (public) ~this - function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; - } - - // (public) this << n - function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; - } - - // (public) this >> n - function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; - } - - // return index of lowest 1-bit in x, x < 2^31 - function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; - } - - // (public) returns index of lowest 1-bit (or -1 if none) - function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; - } - - // return number of 1 bits in x - function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; - } - - // (public) return number of set bits - function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; - } - - // (public) true iff nth bit is set - function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); - } - - // (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - // (public) this + a - function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - - // (public) this - a - function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - - // (public) this * a - function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - - // (public) this^2 - function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - - // (public) this / a - function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - - // (public) this % a - function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - - // (public) [this/a,this%a] - function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // A "null" reducer - function NullExp() {} - function nNop(x) { return x; } - function nMulTo(x,y,r) { x.multiplyTo(y,r); } - function nSqrTo(x,r) { x.squareTo(r); } - - NullExp.prototype.convert = nNop; - NullExp.prototype.revert = nNop; - NullExp.prototype.mulTo = nMulTo; - NullExp.prototype.sqrTo = nSqrTo; - - // (public) this^e - function bnPow(e) { return this.exp(e,new NullExp()); } - - // (protected) r = lower n words of "this * a", a.t <= n - // "this" should be the larger one if appropriate. - function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); - } - - // (protected) r = "this * a" without lower n words, n > 0 - // "this" should be the larger one if appropriate. - function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); - } - - // Barrett modular reduction - function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; - } - - function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } - } - - function barrettRevert(x) { return x; } - - // x = x mod m (HAC 14.42) - function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = x^2 mod m; x != r - function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = x*y mod m; x,y != r - function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Barrett.prototype.convert = barrettConvert; - Barrett.prototype.revert = barrettRevert; - Barrett.prototype.reduce = barrettReduce; - Barrett.prototype.mulTo = barrettMulTo; - Barrett.prototype.sqrTo = barrettSqrTo; - - // (public) this^e % m (HAC 14.85) - function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; - } - - // (protected) this % n, n < 2^26 - function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; - } - - // (public) 1/this % m (HAC 14.61) - function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; - } - - var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; - var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - - // (public) test primality with certainty >= 1-.5^t - function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); - } - - // (protected) true if probably prime (HAC 4.24, Miller-Rabin) - function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; - } - - // protected - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.fromNumber = bnpFromNumber; - BigInteger.prototype.bitwiseTo = bnpBitwiseTo; - BigInteger.prototype.changeBit = bnpChangeBit; - BigInteger.prototype.addTo = bnpAddTo; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; - BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; - BigInteger.prototype.modInt = bnpModInt; - BigInteger.prototype.millerRabin = bnpMillerRabin; - - // public - BigInteger.prototype.clone = bnClone; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.byteValue = bnByteValue; - BigInteger.prototype.shortValue = bnShortValue; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.toByteArray = bnToByteArray; - BigInteger.prototype.equals = bnEquals; - BigInteger.prototype.min = bnMin; - BigInteger.prototype.max = bnMax; - BigInteger.prototype.and = bnAnd; - BigInteger.prototype.or = bnOr; - BigInteger.prototype.xor = bnXor; - BigInteger.prototype.andNot = bnAndNot; - BigInteger.prototype.not = bnNot; - BigInteger.prototype.shiftLeft = bnShiftLeft; - BigInteger.prototype.shiftRight = bnShiftRight; - BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; - BigInteger.prototype.bitCount = bnBitCount; - BigInteger.prototype.testBit = bnTestBit; - BigInteger.prototype.setBit = bnSetBit; - BigInteger.prototype.clearBit = bnClearBit; - BigInteger.prototype.flipBit = bnFlipBit; - BigInteger.prototype.add = bnAdd; - BigInteger.prototype.subtract = bnSubtract; - BigInteger.prototype.multiply = bnMultiply; - BigInteger.prototype.divide = bnDivide; - BigInteger.prototype.remainder = bnRemainder; - BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; - BigInteger.prototype.modPow = bnModPow; - BigInteger.prototype.modInverse = bnModInverse; - BigInteger.prototype.pow = bnPow; - BigInteger.prototype.gcd = bnGCD; - BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - - // JSBN-specific extension - BigInteger.prototype.square = bnSquare; - - // Expose the Barrett function - BigInteger.prototype.Barrett = Barrett - - // BigInteger interfaces not implemented in jsbn: - - // BigInteger(int signum, byte[] magnitude) - // double doubleValue() - // float floatValue() - // int hashCode() - // long longValue() - // static BigInteger valueOf(long val) - - // Random number generator - requires a PRNG backend, e.g. prng4.js - - // For best results, put code like - // - // in your main HTML document. - - var rng_state; - var rng_pool; - var rng_pptr; - - // Mix in a 32-bit integer into the pool - function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; - } - - // Mix in the current time (w/milliseconds) into the pool - function rng_seed_time() { - rng_seed_int(new Date().getTime()); - } - - // Initialize the pool with junk if needed. - if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(typeof window !== "undefined" && window.crypto) { - if (window.crypto.getRandomValues) { - // Use webcrypto if available - var ua = new Uint8Array(32); - window.crypto.getRandomValues(ua); - for(t = 0; t < 32; ++t) - rng_pool[rng_pptr++] = ua[t]; - } - else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); - } - - function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); - } - - function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); - } - - function SecureRandom() {} - - SecureRandom.prototype.nextBytes = rng_get_bytes; - - // prng4.js - uses Arcfour as a PRNG - - function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); - } - - // Initialize arcfour context from key, an array of ints, each from [0..255] - function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; - } - - function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; - } - - Arcfour.prototype.init = ARC4init; - Arcfour.prototype.next = ARC4next; - - // Plug in your RNG constructor here - function prng_newstate() { - return new Arcfour(); - } - - // Pool size must be a multiple of 4 and greater than 32. - // An array of bytes the size of the pool will be passed to init() - var rng_psize = 256; - - BigInteger.SecureRandom = SecureRandom; - BigInteger.BigInteger = BigInteger; - if (true) { - exports = module.exports = BigInteger; - } else {} - -}).call(this); - - -/***/ }), -/* 243 */ -/***/ (function(__unusedmodule, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 244 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day - -var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute - -function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; -} - -function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; - - match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); - - if (match === null) throw new Error('Date resolve error'); - - // match: [1] year [2] month [3] day - - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); - - if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)); - } - - // match: [4] hour [5] minute [6] second [7] fraction - - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); - - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { // milli-seconds - fraction += '0'; - } - fraction = +fraction; - } - - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute - - if (match[9]) { - tz_hour = +(match[10]); - tz_minute = +(match[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds - if (match[9] === '-') delta = -delta; - } - - date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - - if (delta) date.setTime(date.getTime() - delta); - - return date; -} - -function representYamlTimestamp(object /*, style*/) { - return object.toISOString(); -} - -module.exports = new Type('tag:yaml.org,2002:timestamp', { - kind: 'scalar', - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp -}); - - -/***/ }), -/* 245 */ -/***/ (function(module) { - -var core = module.exports = { version: '2.6.12' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 246 */, -/* 247 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -const os = __webpack_require__(87); -const hasFlag = __webpack_require__(364); - -const env = process.env; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; -} - -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} - -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } - - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } - - const min = forceColor ? 1 : 0; - - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } - - return 1; - } - - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - - return min; - } - - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } - - if (env.COLORTERM === 'truecolor') { - return 3; - } - - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } - - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } - - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } - - if ('COLORTERM' in env) { - return 1; - } - - if (env.TERM === 'dumb') { - return min; - } - - return min; -} - -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); -} - -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; - - -/***/ }), -/* 248 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _extractHashtags = _interopRequireDefault(__webpack_require__(566)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(hashtag) { - if (!hashtag) { - return false; - } - - var extracted = (0, _extractHashtags["default"])(hashtag); // Should extract the hashtag minus the # sign, hence the .slice(1) - - return extracted.length === 1 && extracted[0] === hashtag.slice(1); -} - -module.exports = exports.default; - -/***/ }), -/* 249 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2011 Mark Cavage All rights reserved. - -var errors = __webpack_require__(584); -var types = __webpack_require__(362); - -var Reader = __webpack_require__(733); -var Writer = __webpack_require__(998); - - -// --- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} - - -/***/ }), -/* 250 */ -/***/ (function(module) { - -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} - - -/***/ }), -/* 251 */, -/* 252 */, -/* 253 */, -/* 254 */ -/***/ (function(module) { - -function Caseless (dict) { - this.dict = dict || {} -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) - } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has - } -} -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_PROTOCOL_OPTIONS; - - if (!text || (options.extractUrlsWithoutProtocol ? !text.match(/\./) : !text.match(/:/))) { - return []; - } - - var urls = []; - - var _loop = function _loop() { - var before = RegExp.$2; - var url = RegExp.$3; - var protocol = RegExp.$4; - var domain = RegExp.$5; - var path = RegExp.$7; - var endPosition = _extractUrl["default"].lastIndex; - var startPosition = endPosition - url.length; - - if (!isValidUrl(url, protocol || DEFAULT_PROTOCOL, domain)) { - return "continue"; - } // extract ASCII-only domains. - - - if (!protocol) { - if (!options.extractUrlsWithoutProtocol || before.match(_invalidUrlWithoutProtocolPrecedingChars["default"])) { - return "continue"; - } - - var lastUrl = null; - var asciiEndPosition = 0; - domain.replace(_validAsciiDomain["default"], function (asciiDomain) { - var asciiStartPosition = domain.indexOf(asciiDomain, asciiEndPosition); - asciiEndPosition = asciiStartPosition + asciiDomain.length; - lastUrl = { - url: asciiDomain, - indices: [startPosition + asciiStartPosition, startPosition + asciiEndPosition] - }; - urls.push(lastUrl); - }); // no ASCII-only domain found. Skip the entire URL. - - if (lastUrl == null) { - return "continue"; - } // lastUrl only contains domain. Need to add path and query if they exist. - - - if (path) { - lastUrl.url = url.replace(domain, lastUrl.url); - lastUrl.indices[1] = endPosition; - } - } else { - // In the case of t.co URLs, don't allow additional path characters. - if (url.match(_validTcoUrl["default"])) { - var tcoUrlSlug = RegExp.$1; - - if (tcoUrlSlug && tcoUrlSlug.length > MAX_TCO_SLUG_LENGTH) { - return "continue"; - } else { - url = RegExp.lastMatch; - endPosition = startPosition + url.length; - } - } - - urls.push({ - url: url, - indices: [startPosition, endPosition] - }); - } - }; - - while (_extractUrl["default"].exec(text)) { - var _ret = _loop(); - - if (_ret === "continue") continue; - } - - return urls; -}; - -var isValidUrl = function isValidUrl(url, protocol, domain) { - var urlLength = url.length; - - var punycodeEncodedDomain = _idna["default"].toAscii(domain); - - if (!punycodeEncodedDomain || !punycodeEncodedDomain.length) { - return false; - } - - urlLength = urlLength + punycodeEncodedDomain.length - domain.length; - return protocol.length + urlLength <= MAX_URL_LENGTH; -}; - -var _default = extractUrlsWithIndices; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 258 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -module.exports = new Type('tag:yaml.org,2002:str', { - kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } -}); - - -/***/ }), -/* 259 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var def = __webpack_require__(973).f; -var has = __webpack_require__(975); -var TAG = __webpack_require__(621)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 260 */, -/* 261 */, -/* 262 */, -/* 263 */, -/* 264 */ -/***/ (function(module) { - -"use strict"; - - -// do not edit .js files directly - edit src/index.jst - - - -module.exports = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - - -/***/ }), -/* 265 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _directionalMarkersGroup = _interopRequireDefault(__webpack_require__(449)); - -var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); - -var _punct = _interopRequireDefault(__webpack_require__(412)); - -var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); - -var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var invalidDomainChars = (0, _stringSupplant["default"])('#{punct}#{spacesGroup}#{invalidCharsGroup}#{directionalMarkersGroup}', { - punct: _punct["default"], - spacesGroup: _spacesGroup["default"], - invalidCharsGroup: _invalidCharsGroup["default"], - directionalMarkersGroup: _directionalMarkersGroup["default"] -}); -var _default = invalidDomainChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 266 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlFragment = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlFragment; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 267 */, -/* 268 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var crypto = __webpack_require__(417); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); - -var pkcs1 = __webpack_require__(508); -var pkcs8 = __webpack_require__(435); -var sshpriv = __webpack_require__(862); -var rfc4253 = __webpack_require__(538); - -var errors = __webpack_require__(570); - -var OID_PBES2 = '1.2.840.113549.1.5.13'; -var OID_PBKDF2 = '1.2.840.113549.1.5.12'; - -var OID_TO_CIPHER = { - '1.2.840.113549.3.7': '3des-cbc', - '2.16.840.1.101.3.4.1.2': 'aes128-cbc', - '2.16.840.1.101.3.4.1.42': 'aes256-cbc' -}; -var CIPHER_TO_OID = {}; -Object.keys(OID_TO_CIPHER).forEach(function (k) { - CIPHER_TO_OID[OID_TO_CIPHER[k]] = k; -}); - -var OID_TO_HASH = { - '1.2.840.113549.2.7': 'sha1', - '1.2.840.113549.2.9': 'sha256', - '1.2.840.113549.2.11': 'sha512' -}; -var HASH_TO_OID = {}; -Object.keys(OID_TO_HASH).forEach(function (k) { - HASH_TO_OID[OID_TO_HASH[k]] = k; -}); - -/* - * For reading we support both PKCS#1 and PKCS#8. If we find a private key, - * we just take the public component of it and use that. - */ -function read(buf, options, forceType) { - var input = buf; - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var lines = buf.trim().split(/[\r\n]+/g); - - var m; - var si = -1; - while (!m && si < lines.length) { - m = lines[++si].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - } - assert.ok(m, 'invalid PEM header'); - - var m2; - var ei = lines.length; - while (!m2 && ei > 0) { - m2 = lines[--ei].match(/*JSSTYLED*/ - /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - } - assert.ok(m2, 'invalid PEM footer'); - - /* Begin and end banners must match key type */ - assert.equal(m[2], m2[2]); - var type = m[2].toLowerCase(); - - var alg; - if (m[1]) { - /* They also must match algorithms, if given */ - assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); - alg = m[1].trim(); - } - - lines = lines.slice(si, ei + 1); - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } - - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = Buffer.from(lines, 'base64'); - - var cipher, key, iv; - if (headers['proc-type']) { - var parts = headers['proc-type'].split(','); - if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } else { - parts = headers['dek-info'].split(','); - assert.ok(parts.length === 2); - cipher = parts[0].toLowerCase(); - iv = Buffer.from(parts[1], 'hex'); - key = utils.opensslKeyDeriv(cipher, iv, - options.passphrase, 1).key; - } - } - } - - if (alg && alg.toLowerCase() === 'encrypted') { - var eder = new asn1.BerReader(buf); - var pbesEnd; - eder.readSequence(); - - eder.readSequence(); - pbesEnd = eder.offset + eder.length; - - var method = eder.readOID(); - if (method !== OID_PBES2) { - throw (new Error('Unsupported PEM/PKCS8 encryption ' + - 'scheme: ' + method)); - } - - eder.readSequence(); /* PBES2-params */ - - eder.readSequence(); /* keyDerivationFunc */ - var kdfEnd = eder.offset + eder.length; - var kdfOid = eder.readOID(); - if (kdfOid !== OID_PBKDF2) - throw (new Error('Unsupported PBES2 KDF: ' + kdfOid)); - eder.readSequence(); - var salt = eder.readString(asn1.Ber.OctetString, true); - var iterations = eder.readInt(); - var hashAlg = 'sha1'; - if (eder.offset < kdfEnd) { - eder.readSequence(); - var hashAlgOid = eder.readOID(); - hashAlg = OID_TO_HASH[hashAlgOid]; - if (hashAlg === undefined) { - throw (new Error('Unsupported PBKDF2 hash: ' + - hashAlgOid)); - } - } - eder._offset = kdfEnd; - - eder.readSequence(); /* encryptionScheme */ - var cipherOid = eder.readOID(); - cipher = OID_TO_CIPHER[cipherOid]; - if (cipher === undefined) { - throw (new Error('Unsupported PBES2 cipher: ' + - cipherOid)); - } - iv = eder.readString(asn1.Ber.OctetString, true); - - eder._offset = pbesEnd; - buf = eder.readString(asn1.Ber.OctetString, true); - - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } - - var cinfo = utils.opensshCipherInfo(cipher); - - cipher = cinfo.opensslName; - key = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize, - options.passphrase); - alg = undefined; - } - - if (cipher && key && iv) { - var cipherStream = crypto.createDecipheriv(cipher, key, iv); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(buf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - buf = Buffer.concat(chunks); - } - - /* The new OpenSSH internal format abuses PEM headers */ - if (alg && alg.toLowerCase() === 'openssh') - return (sshpriv.readSSHPrivate(type, buf, options)); - if (alg && alg.toLowerCase() === 'ssh2') - return (rfc4253.readType(type, buf, options)); - - var der = new asn1.BerReader(buf); - der.originalInput = input; - - /* - * All of the PEM file types start with a sequence tag, so chop it - * off here - */ - der.readSequence(); - - /* PKCS#1 type keys name an algorithm in the banner explicitly */ - if (alg) { - if (forceType) - assert.strictEqual(forceType, 'pkcs1'); - return (pkcs1.readPkcs1(alg, type, der)); - } else { - if (forceType) - assert.strictEqual(forceType, 'pkcs8'); - return (pkcs8.readPkcs8(alg, type, der)); - } -} - -function write(key, options, type) { - assert.object(key); - - var alg = { - 'ecdsa': 'EC', - 'rsa': 'RSA', - 'dsa': 'DSA', - 'ed25519': 'EdDSA' - }[key.type]; - var header; - - var der = new asn1.BerWriter(); - - if (PrivateKey.isPrivateKey(key)) { - if (type && type === 'pkcs8') { - header = 'PRIVATE KEY'; - pkcs8.writePkcs8(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs1'); - header = alg + ' PRIVATE KEY'; - pkcs1.writePkcs1(der, key); - } - - } else if (Key.isKey(key)) { - if (type && type === 'pkcs1') { - header = alg + ' PUBLIC KEY'; - pkcs1.writePkcs1(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs8'); - header = 'PUBLIC KEY'; - pkcs8.writePkcs8(der, key); - } - - } else { - throw (new Error('key is not a Key or PrivateKey')); - } - - var tmp = der.buffer.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} - - -/***/ }), -/* 269 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = isSetupDone; - -const fs = __webpack_require__(747); -const { resolve: resolvePath } = __webpack_require__(622); - -function isSetupDone() { - const tweetsFolderPath = resolvePath(process.env.GITHUB_WORKSPACE, "tweets"); - return new Promise((resolve) => { - fs.stat(tweetsFolderPath, (error, stat) => { - if (error) { - return resolve(false); - } - - resolve(stat.isDirectory()); - }); - }); -} - - -/***/ }), -/* 270 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - bufferSplit: bufferSplit, - addRSAMissing: addRSAMissing, - calculateDSAPublic: calculateDSAPublic, - calculateED25519Public: calculateED25519Public, - calculateX25519Public: calculateX25519Public, - mpNormalize: mpNormalize, - mpDenormalize: mpDenormalize, - ecNormalize: ecNormalize, - countZeros: countZeros, - assertCompatible: assertCompatible, - isCompatible: isCompatible, - opensslKeyDeriv: opensslKeyDeriv, - opensshCipherInfo: opensshCipherInfo, - publicFromPrivateECDSA: publicFromPrivateECDSA, - zeroPadToLength: zeroPadToLength, - writeBitString: writeBitString, - readBitString: readBitString, - pbkdf2: pbkdf2 -}; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var PrivateKey = __webpack_require__(502); -var Key = __webpack_require__(500); -var crypto = __webpack_require__(417); -var algs = __webpack_require__(603); -var asn1 = __webpack_require__(325); - -var ec = __webpack_require__(161); -var jsbn = __webpack_require__(242).BigInteger; -var nacl = __webpack_require__(196); - -var MAX_CLASS_DEPTH = 3; - -function isCompatible(obj, klass, needVer) { - if (obj === null || typeof (obj) !== 'object') - return (false); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return (true); - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - if (!proto || ++depth > MAX_CLASS_DEPTH) - return (false); - } - if (proto.constructor.name !== klass.name) - return (false); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - if (ver[0] != needVer[0] || ver[1] < needVer[1]) - return (false); - return (true); -} - -function assertCompatible(obj, klass, needVer, name) { - if (name === undefined) - name = 'object'; - assert.ok(obj, name + ' must not be null'); - assert.object(obj, name + ' must be an object'); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return; - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, - name + ' must be a ' + klass.name + ' instance'); - } - assert.strictEqual(proto.constructor.name, klass.name, - name + ' must be a ' + klass.name + ' instance'); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], - name + ' must be compatible with ' + klass.name + ' klass ' + - 'version ' + needVer[0] + '.' + needVer[1]); -} - -var CIPHER_LEN = { - 'des-ede3-cbc': { key: 24, iv: 8 }, - 'aes-128-cbc': { key: 16, iv: 16 }, - 'aes-256-cbc': { key: 32, iv: 16 } -}; -var PKCS5_SALT_LEN = 8; - -function opensslKeyDeriv(cipher, salt, passphrase, count) { - assert.buffer(salt, 'salt'); - assert.buffer(passphrase, 'passphrase'); - assert.number(count, 'iteration count'); - - var clen = CIPHER_LEN[cipher]; - assert.object(clen, 'supported cipher'); - - salt = salt.slice(0, PKCS5_SALT_LEN); - - var D, D_prev, bufs; - var material = Buffer.alloc(0); - while (material.length < clen.key + clen.iv) { - bufs = []; - if (D_prev) - bufs.push(D_prev); - bufs.push(passphrase); - bufs.push(salt); - D = Buffer.concat(bufs); - for (var j = 0; j < count; ++j) - D = crypto.createHash('md5').update(D).digest(); - material = Buffer.concat([material, D]); - D_prev = D; - } - - return ({ - key: material.slice(0, clen.key), - iv: material.slice(clen.key, clen.key + clen.iv) - }); -} - -/* See: RFC2898 */ -function pbkdf2(hashAlg, salt, iterations, size, passphrase) { - var hkey = Buffer.alloc(salt.length + 4); - salt.copy(hkey); - - var gen = 0, ts = []; - var i = 1; - while (gen < size) { - var t = T(i++); - gen += t.length; - ts.push(t); - } - return (Buffer.concat(ts).slice(0, size)); - - function T(I) { - hkey.writeUInt32BE(I, hkey.length - 4); - - var hmac = crypto.createHmac(hashAlg, passphrase); - hmac.update(hkey); - - var Ti = hmac.digest(); - var Uc = Ti; - var c = 1; - while (c++ < iterations) { - hmac = crypto.createHmac(hashAlg, passphrase); - hmac.update(Uc); - Uc = hmac.digest(); - for (var x = 0; x < Ti.length; ++x) - Ti[x] ^= Uc[x]; - } - return (Ti); - } -} - -/* Count leading zero bits on a buffer */ -function countZeros(buf) { - var o = 0, obit = 8; - while (o < buf.length) { - var mask = (1 << obit); - if ((buf[o] & mask) === mask) - break; - obit--; - if (obit < 0) { - o++; - obit = 8; - } - } - return (o*8 + (8 - obit) - 1); -} - -function bufferSplit(buf, chr) { - assert.buffer(buf); - assert.string(chr); - - var parts = []; - var lastPart = 0; - var matches = 0; - for (var i = 0; i < buf.length; ++i) { - if (buf[i] === chr.charCodeAt(matches)) - ++matches; - else if (buf[i] === chr.charCodeAt(0)) - matches = 1; - else - matches = 0; - - if (matches >= chr.length) { - var newPart = i + 1; - parts.push(buf.slice(lastPart, newPart - matches)); - lastPart = newPart; - matches = 0; - } - } - if (lastPart <= buf.length) - parts.push(buf.slice(lastPart, buf.length)); - - return (parts); -} - -function ecNormalize(buf, addZero) { - assert.buffer(buf); - if (buf[0] === 0x00 && buf[1] === 0x04) { - if (addZero) - return (buf); - return (buf.slice(1)); - } else if (buf[0] === 0x04) { - if (!addZero) - return (buf); - } else { - while (buf[0] === 0x00) - buf = buf.slice(1); - if (buf[0] === 0x02 || buf[0] === 0x03) - throw (new Error('Compressed elliptic curve points ' + - 'are not supported')); - if (buf[0] !== 0x04) - throw (new Error('Not a valid elliptic curve point')); - if (!addZero) - return (buf); - } - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x0; - buf.copy(b, 1); - return (b); -} - -function readBitString(der, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var buf = der.readString(tag, true); - assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' + - 'not supported (0x' + buf[0].toString(16) + ')'); - return (buf.slice(1)); -} - -function writeBitString(der, buf, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - der.writeBuffer(b, tag); -} - -function mpNormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) - buf = buf.slice(1); - if ((buf[0] & 0x80) === 0x80) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function mpDenormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00) - buf = buf.slice(1); - return (buf); -} - -function zeroPadToLength(buf, len) { - assert.buffer(buf); - assert.number(len); - while (buf.length > len) { - assert.equal(buf[0], 0x00); - buf = buf.slice(1); - } - while (buf.length < len) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function bigintToMpBuf(bigint) { - var buf = Buffer.from(bigint.toByteArray()); - buf = mpNormalize(buf); - return (buf); -} - -function calculateDSAPublic(g, p, x) { - assert.buffer(g); - assert.buffer(p); - assert.buffer(x); - g = new jsbn(g); - p = new jsbn(p); - x = new jsbn(x); - var y = g.modPow(x, p); - var ybuf = bigintToMpBuf(y); - return (ybuf); -} - -function calculateED25519Public(k) { - assert.buffer(k); - - var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function calculateX25519Public(k) { - assert.buffer(k); - - var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function addRSAMissing(key) { - assert.object(key); - assertCompatible(key, PrivateKey, [1, 1]); - - var d = new jsbn(key.part.d.data); - var buf; - - if (!key.part.dmodp) { - var p = new jsbn(key.part.p.data); - var dmodp = d.mod(p.subtract(1)); - - buf = bigintToMpBuf(dmodp); - key.part.dmodp = {name: 'dmodp', data: buf}; - key.parts.push(key.part.dmodp); - } - if (!key.part.dmodq) { - var q = new jsbn(key.part.q.data); - var dmodq = d.mod(q.subtract(1)); - - buf = bigintToMpBuf(dmodq); - key.part.dmodq = {name: 'dmodq', data: buf}; - key.parts.push(key.part.dmodq); - } -} - -function publicFromPrivateECDSA(curveName, priv) { - assert.string(curveName, 'curveName'); - assert.buffer(priv); - var params = algs.curves[curveName]; - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - var d = new jsbn(mpNormalize(priv)); - var pub = G.multiply(d); - pub = Buffer.from(curve.encodePointHex(pub), 'hex'); - - var parts = []; - parts.push({name: 'curve', data: Buffer.from(curveName)}); - parts.push({name: 'Q', data: pub}); - - var key = new Key({type: 'ecdsa', curve: curve, parts: parts}); - return (key); -} - -function opensshCipherInfo(cipher) { - var inf = {}; - switch (cipher) { - case '3des-cbc': - inf.keySize = 24; - inf.blockSize = 8; - inf.opensslName = 'des-ede3-cbc'; - break; - case 'blowfish-cbc': - inf.keySize = 16; - inf.blockSize = 8; - inf.opensslName = 'bf-cbc'; - break; - case 'aes128-cbc': - case 'aes128-ctr': - case 'aes128-gcm@openssh.com': - inf.keySize = 16; - inf.blockSize = 16; - inf.opensslName = 'aes-128-' + cipher.slice(7, 10); - break; - case 'aes192-cbc': - case 'aes192-ctr': - case 'aes192-gcm@openssh.com': - inf.keySize = 24; - inf.blockSize = 16; - inf.opensslName = 'aes-192-' + cipher.slice(7, 10); - break; - case 'aes256-cbc': - case 'aes256-ctr': - case 'aes256-gcm@openssh.com': - inf.keySize = 32; - inf.blockSize = 16; - inf.opensslName = 'aes-256-' + cipher.slice(7, 10); - break; - default: - throw (new Error( - 'Unsupported openssl cipher "' + cipher + '"')); - } - return (inf); -} - - -/***/ }), -/* 271 */, -/* 272 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); - -var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); - -var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUserinfo = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + ':' + ')*', { - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"] -}, 'i'); -var _default = validateUrlUserinfo; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 273 */, -/* 274 */, -/* 275 */, -/* 276 */, -/* 277 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -var global = __webpack_require__(300); -var inheritIfRequired = __webpack_require__(595); -var dP = __webpack_require__(973).f; -var gOPN = __webpack_require__(996).f; -var isRegExp = __webpack_require__(694); -var $flags = __webpack_require__(788); -var $RegExp = global.RegExp; -var Base = $RegExp; -var proto = $RegExp.prototype; -var re1 = /a/g; -var re2 = /a/g; -// "new" creates a new object, old webkit buggy here -var CORRECT_NEW = new $RegExp(re1) !== re1; - -if (__webpack_require__(843) && (!CORRECT_NEW || __webpack_require__(971)(function () { - re2[__webpack_require__(621)('match')] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; -}))) { - $RegExp = function RegExp(p, f) { - var tiRE = this instanceof $RegExp; - var piRE = isRegExp(p); - var fiU = f === undefined; - return !tiRE && piRE && p.constructor === $RegExp && fiU ? p - : inheritIfRequired(CORRECT_NEW - ? new Base(piRE && !fiU ? p.source : p, f) - : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) - , tiRE ? this : proto, $RegExp); - }; - var proxy = function (key) { - key in $RegExp || dP($RegExp, key, { - configurable: true, - get: function () { return Base[key]; }, - set: function (it) { Base[key] = it; } - }); - }; - for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); - proto.constructor = $RegExp; - $RegExp.prototype = proto; - __webpack_require__(976)(global, 'RegExp', $RegExp); -} - -__webpack_require__(422)('RegExp'); - - -/***/ }), -/* 278 */, -/* 279 */, -/* 280 */ -/***/ (function(module) { - -module.exports = register; - -function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - - if (!options) { - options = {}; - } - - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name) { - return register.bind(null, state, name, callback, options); - }, method)(); - } - - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - - return state.registry[name].reduce(function (method, registered) { - return registered.hook.bind(null, method, options); - }, method)(); - }); -} - - -/***/ }), -/* 281 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_enum(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $i = 'i' + $lvl, - $vSchema = 'schema' + $lvl; - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to one of the allowed values\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 282 */, -/* 283 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var URI = __webpack_require__(730) - , equal = __webpack_require__(264) - , util = __webpack_require__(855) - , SchemaObject = __webpack_require__(955) - , traverse = __webpack_require__(992); - -module.exports = resolve; - -resolve.normalizeId = normalizeId; -resolve.fullPath = getFullPath; -resolve.url = resolveUrl; -resolve.ids = resolveIds; -resolve.inlineRef = inlineRef; -resolve.schema = resolveSchema; - -/** - * [resolve and compile the references ($ref)] - * @this Ajv - * @param {Function} compile reference to schema compilation funciton (localCompile) - * @param {Object} root object with information about the root schema for the current schema - * @param {String} ref reference to resolve - * @return {Object|Function} schema object (if the schema can be inlined) or validation function - */ -function resolve(compile, root, ref) { - /* jshint validthis: true */ - var refVal = this._refs[ref]; - if (typeof refVal == 'string') { - if (this._refs[refVal]) refVal = this._refs[refVal]; - else return resolve.call(this, compile, root, refVal); - } - - refVal = refVal || this._schemas[ref]; - if (refVal instanceof SchemaObject) { - return inlineRef(refVal.schema, this._opts.inlineRefs) - ? refVal.schema - : refVal.validate || this._compile(refVal); - } - - var res = resolveSchema.call(this, root, ref); - var schema, v, baseId; - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - - if (schema instanceof SchemaObject) { - v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); - } else if (schema !== undefined) { - v = inlineRef(schema, this._opts.inlineRefs) - ? schema - : compile.call(this, schema, root, undefined, baseId); - } - - return v; -} - - -/** - * Resolve schema, its root and baseId - * @this Ajv - * @param {Object} root root object with properties schema, refVal, refs - * @param {String} ref reference to resolve - * @return {Object} object with properties schema, root, baseId - */ -function resolveSchema(root, ref) { - /* jshint validthis: true */ - var p = URI.parse(ref) - , refPath = _getFullPath(p) - , baseId = getFullPath(this._getId(root.schema)); - if (Object.keys(root.schema).length === 0 || refPath !== baseId) { - var id = normalizeId(refPath); - var refVal = this._refs[id]; - if (typeof refVal == 'string') { - return resolveRecursive.call(this, root, refVal, p); - } else if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - root = refVal; - } else { - refVal = this._schemas[id]; - if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - if (id == normalizeId(ref)) - return { schema: refVal, root: root, baseId: baseId }; - root = refVal; - } else { - return; - } - } - if (!root.schema) return; - baseId = getFullPath(this._getId(root.schema)); - } - return getJsonPointer.call(this, p, baseId, root.schema, root); -} - - -/* @this Ajv */ -function resolveRecursive(root, ref, parsedRef) { - /* jshint validthis: true */ - var res = resolveSchema.call(this, root, ref); - if (res) { - var schema = res.schema; - var baseId = res.baseId; - root = res.root; - var id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - return getJsonPointer.call(this, parsedRef, baseId, schema, root); - } -} - - -var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); -/* @this Ajv */ -function getJsonPointer(parsedRef, baseId, schema, root) { - /* jshint validthis: true */ - parsedRef.fragment = parsedRef.fragment || ''; - if (parsedRef.fragment.slice(0,1) != '/') return; - var parts = parsedRef.fragment.split('/'); - - for (var i = 1; i < parts.length; i++) { - var part = parts[i]; - if (part) { - part = util.unescapeFragment(part); - schema = schema[part]; - if (schema === undefined) break; - var id; - if (!PREVENT_SCOPE_CHANGE[part]) { - id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - if (schema.$ref) { - var $ref = resolveUrl(baseId, schema.$ref); - var res = resolveSchema.call(this, root, $ref); - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - } - } - } - } - if (schema !== undefined && schema !== root.schema) - return { schema: schema, root: root, baseId: baseId }; -} - - -var SIMPLE_INLINED = util.toHash([ - 'type', 'format', 'pattern', - 'maxLength', 'minLength', - 'maxProperties', 'minProperties', - 'maxItems', 'minItems', - 'maximum', 'minimum', - 'uniqueItems', 'multipleOf', - 'required', 'enum' -]); -function inlineRef(schema, limit) { - if (limit === false) return false; - if (limit === undefined || limit === true) return checkNoRef(schema); - else if (limit) return countKeys(schema) <= limit; -} - - -function checkNoRef(schema) { - var item; - if (Array.isArray(schema)) { - for (var i=0; i String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 290 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = { - DiffieHellman: DiffieHellman, - generateECDSA: generateECDSA, - generateED25519: generateED25519 -}; - -var assert = __webpack_require__(489); -var crypto = __webpack_require__(417); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var nacl = __webpack_require__(196); - -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); - -var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined); - -var ecdh = __webpack_require__(304); -var ec = __webpack_require__(161); -var jsbn = __webpack_require__(242).BigInteger; - -function DiffieHellman(key) { - utils.assertCompatible(key, Key, [1, 4], 'key'); - this._isPriv = PrivateKey.isPrivateKey(key, [1, 3]); - this._algo = key.type; - this._curve = key.curve; - this._key = key; - if (key.type === 'dsa') { - if (!CRYPTO_HAVE_ECDH) { - throw (new Error('Due to bugs in the node 0.10 ' + - 'crypto API, node 0.12.x or later is required ' + - 'to use DH')); - } - this._dh = crypto.createDiffieHellman( - key.part.p.data, undefined, - key.part.g.data, undefined); - this._p = key.part.p; - this._g = key.part.g; - if (this._isPriv) - this._dh.setPrivateKey(key.part.x.data); - this._dh.setPublicKey(key.part.y.data); - - } else if (key.type === 'ecdsa') { - if (!CRYPTO_HAVE_ECDH) { - this._ecParams = new X9ECParameters(this._curve); - - if (this._isPriv) { - this._priv = new ECPrivate( - this._ecParams, key.part.d.data); - } - return; - } - - var curve = { - 'nistp256': 'prime256v1', - 'nistp384': 'secp384r1', - 'nistp521': 'secp521r1' - }[key.curve]; - this._dh = crypto.createECDH(curve); - if (typeof (this._dh) !== 'object' || - typeof (this._dh.setPrivateKey) !== 'function') { - CRYPTO_HAVE_ECDH = false; - DiffieHellman.call(this, key); - return; - } - if (this._isPriv) - this._dh.setPrivateKey(key.part.d.data); - this._dh.setPublicKey(key.part.Q.data); - - } else if (key.type === 'curve25519') { - if (this._isPriv) { - utils.assertCompatible(key, PrivateKey, [1, 5], 'key'); - this._priv = key.part.k.data; - } - - } else { - throw (new Error('DH not supported for ' + key.type + ' keys')); - } -} - -DiffieHellman.prototype.getPublicKey = function () { - if (this._isPriv) - return (this._key.toPublic()); - return (this._key); -}; - -DiffieHellman.prototype.getPrivateKey = function () { - if (this._isPriv) - return (this._key); - else - return (undefined); -}; -DiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey; - -DiffieHellman.prototype._keyCheck = function (pk, isPub) { - assert.object(pk, 'key'); - if (!isPub) - utils.assertCompatible(pk, PrivateKey, [1, 3], 'key'); - utils.assertCompatible(pk, Key, [1, 4], 'key'); - - if (pk.type !== this._algo) { - throw (new Error('A ' + pk.type + ' key cannot be used in ' + - this._algo + ' Diffie-Hellman')); - } - - if (pk.curve !== this._curve) { - throw (new Error('A key from the ' + pk.curve + ' curve ' + - 'cannot be used with a ' + this._curve + - ' Diffie-Hellman')); - } - - if (pk.type === 'dsa') { - assert.deepEqual(pk.part.p, this._p, - 'DSA key prime does not match'); - assert.deepEqual(pk.part.g, this._g, - 'DSA key generator does not match'); - } -}; - -DiffieHellman.prototype.setKey = function (pk) { - this._keyCheck(pk); - - if (pk.type === 'dsa') { - this._dh.setPrivateKey(pk.part.x.data); - this._dh.setPublicKey(pk.part.y.data); - - } else if (pk.type === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.setPrivateKey(pk.part.d.data); - this._dh.setPublicKey(pk.part.Q.data); - } else { - this._priv = new ECPrivate( - this._ecParams, pk.part.d.data); - } - - } else if (pk.type === 'curve25519') { - var k = pk.part.k; - if (!pk.part.k) - k = pk.part.r; - this._priv = k.data; - if (this._priv[0] === 0x00) - this._priv = this._priv.slice(1); - this._priv = this._priv.slice(0, 32); - } - this._key = pk; - this._isPriv = true; -}; -DiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey; - -DiffieHellman.prototype.computeSecret = function (otherpk) { - this._keyCheck(otherpk, true); - if (!this._isPriv) - throw (new Error('DH exchange has not been initialized with ' + - 'a private key yet')); - - var pub; - if (this._algo === 'dsa') { - return (this._dh.computeSecret( - otherpk.part.y.data)); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - return (this._dh.computeSecret( - otherpk.part.Q.data)); - } else { - pub = new ECPublic( - this._ecParams, otherpk.part.Q.data); - return (this._priv.deriveSharedSecret(pub)); - } - - } else if (this._algo === 'curve25519') { - pub = otherpk.part.A.data; - while (pub[0] === 0x00 && pub.length > 32) - pub = pub.slice(1); - var priv = this._priv; - assert.strictEqual(pub.length, 32); - assert.strictEqual(priv.length, 32); - - var secret = nacl.box.before(new Uint8Array(pub), - new Uint8Array(priv)); - - return (Buffer.from(secret)); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; - -DiffieHellman.prototype.generateKey = function () { - var parts = []; - var priv, pub; - if (this._algo === 'dsa') { - this._dh.generateKeys(); - - parts.push({name: 'p', data: this._p.data}); - parts.push({name: 'q', data: this._key.part.q.data}); - parts.push({name: 'g', data: this._g.data}); - parts.push({name: 'y', data: this._dh.getPublicKey()}); - parts.push({name: 'x', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'dsa', - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.generateKeys(); - - parts.push({name: 'curve', - data: Buffer.from(this._curve)}); - parts.push({name: 'Q', data: this._dh.getPublicKey()}); - parts.push({name: 'd', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else { - var n = this._ecParams.getN(); - var r = new jsbn(crypto.randomBytes(n.bitLength())); - var n1 = n.subtract(jsbn.ONE); - priv = r.mod(n1).add(jsbn.ONE); - pub = this._ecParams.getG().multiply(priv); - - priv = Buffer.from(priv.toByteArray()); - pub = Buffer.from(this._ecParams.getCurve(). - encodePointHex(pub), 'hex'); - - this._priv = new ECPrivate(this._ecParams, priv); - - parts.push({name: 'curve', - data: Buffer.from(this._curve)}); - parts.push({name: 'Q', data: pub}); - parts.push({name: 'd', data: priv}); - - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - } else if (this._algo === 'curve25519') { - var pair = nacl.box.keyPair(); - priv = Buffer.from(pair.secretKey); - pub = Buffer.from(pair.publicKey); - priv = Buffer.concat([priv, pub]); - assert.strictEqual(priv.length, 64); - assert.strictEqual(pub.length, 32); - - parts.push({name: 'A', data: pub}); - parts.push({name: 'k', data: priv}); - this._key = new PrivateKey({ - type: 'curve25519', - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; -DiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey; - -/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */ - -function X9ECParameters(name) { - var params = algs.curves[name]; - assert.object(params); - - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var n = new jsbn(params.n); - var h = jsbn.ONE; - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - this.curve = curve; - this.g = G; - this.n = n; - this.h = h; -} -X9ECParameters.prototype.getCurve = function () { return (this.curve); }; -X9ECParameters.prototype.getG = function () { return (this.g); }; -X9ECParameters.prototype.getN = function () { return (this.n); }; -X9ECParameters.prototype.getH = function () { return (this.h); }; - -function ECPublic(params, buffer) { - this._params = params; - if (buffer[0] === 0x00) - buffer = buffer.slice(1); - this._pub = params.getCurve().decodePointHex(buffer.toString('hex')); -} - -function ECPrivate(params, buffer) { - this._params = params; - this._priv = new jsbn(utils.mpNormalize(buffer)); -} -ECPrivate.prototype.deriveSharedSecret = function (pubKey) { - assert.ok(pubKey instanceof ECPublic); - var S = pubKey._pub.multiply(this._priv); - return (Buffer.from(S.getX().toBigInteger().toByteArray())); -}; - -function generateED25519() { - var pair = nacl.sign.keyPair(); - var priv = Buffer.from(pair.secretKey); - var pub = Buffer.from(pair.publicKey); - assert.strictEqual(priv.length, 64); - assert.strictEqual(pub.length, 32); - - var parts = []; - parts.push({name: 'A', data: pub}); - parts.push({name: 'k', data: priv.slice(0, 32)}); - var key = new PrivateKey({ - type: 'ed25519', - parts: parts - }); - return (key); -} - -/* Generates a new ECDSA private key on a given curve. */ -function generateECDSA(curve) { - var parts = []; - var key; - - if (CRYPTO_HAVE_ECDH) { - /* - * Node crypto doesn't expose key generation directly, but the - * ECDH instances can generate keys. It turns out this just - * calls into the OpenSSL generic key generator, and we can - * read its output happily without doing an actual DH. So we - * use that here. - */ - var osCurve = { - 'nistp256': 'prime256v1', - 'nistp384': 'secp384r1', - 'nistp521': 'secp521r1' - }[curve]; - - var dh = crypto.createECDH(osCurve); - dh.generateKeys(); - - parts.push({name: 'curve', - data: Buffer.from(curve)}); - parts.push({name: 'Q', data: dh.getPublicKey()}); - parts.push({name: 'd', data: dh.getPrivateKey()}); - - key = new PrivateKey({ - type: 'ecdsa', - curve: curve, - parts: parts - }); - return (key); - } else { - - var ecParams = new X9ECParameters(curve); - - /* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */ - var n = ecParams.getN(); - /* - * The crypto.randomBytes() function can only give us whole - * bytes, so taking a nod from X9.62, we round up. - */ - var cByteLen = Math.ceil((n.bitLength() + 64) / 8); - var c = new jsbn(crypto.randomBytes(cByteLen)); - - var n1 = n.subtract(jsbn.ONE); - var priv = c.mod(n1).add(jsbn.ONE); - var pub = ecParams.getG().multiply(priv); - - priv = Buffer.from(priv.toByteArray()); - pub = Buffer.from(ecParams.getCurve(). - encodePointHex(pub), 'hex'); - - parts.push({name: 'curve', data: Buffer.from(curve)}); - parts.push({name: 'Q', data: pub}); - parts.push({name: 'd', data: priv}); - - key = new PrivateKey({ - type: 'ecdsa', - curve: curve, - parts: parts - }); - return (key); - } -} - - -/***/ }), -/* 291 */, -/* 292 */, -/* 293 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _rng = _interopRequireDefault(__webpack_require__(506)); - -var _stringify = _interopRequireDefault(__webpack_require__(960)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function v4(options, buf, offset) { - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return (0, _stringify.default)(rnds); -} - -var _default = v4; -exports.default = _default; - -/***/ }), -/* 294 */, -/* 295 */, -/* 296 */, -/* 297 */, -/* 298 */, -/* 299 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -const VERSION = "4.3.1"; - -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -function normalizePaginatedListResponse(response) { - // endpoints can respond with 204 if repository is empty - if (!response.data) { - return { ...response, - data: [] - }; - } - - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way - // to retrieve the same information. - - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - - response.data.total_count = totalCount; - return response; -} - -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { - done: true - }; - - try { - const response = await requestMethod({ - method, - url, - headers - }); - const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set - - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { - value: normalizedResponse - }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } - - }) - }; -} - -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = undefined; - } - - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); -} - -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then(result => { - if (result.done) { - return results; - } - - let earlyExit = false; - - function done() { - earlyExit = true; - } - - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - - if (earlyExit) { - return results; - } - - return gather(octokit, results, iterator, mapFn); - }); -} - -const composePaginateRest = Object.assign(paginate, { - iterator -}); - -const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; - -function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } -} - -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ - -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION; - -exports.composePaginateRest = composePaginateRest; -exports.isPaginatingEndpoint = isPaginatingEndpoint; -exports.paginateRest = paginateRest; -exports.paginatingEndpoints = paginatingEndpoints; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 300 */ -/***/ (function(module) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 301 */, -/* 302 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPort = /[0-9]{1,5}/; -var _default = validateUrlPort; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 303 */, -/* 304 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -var crypto = __webpack_require__(417); -var BigInteger = __webpack_require__(242).BigInteger; -var ECPointFp = __webpack_require__(161).ECPointFp; -var Buffer = __webpack_require__(726).Buffer; -exports.ECCurves = __webpack_require__(959); - -// zero prepad -function unstupid(hex,len) -{ - return (hex.length >= len) ? hex : unstupid("0"+hex,len); -} - -exports.ECKey = function(curve, key, isPublic) -{ - var priv; - var c = curve(); - var n = c.getN(); - var bytes = Math.floor(n.bitLength()/8); - - if(key) - { - if(isPublic) - { - var curve = c.getCurve(); -// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format -// var y = key.slice(bytes+1); -// this.P = new ECPointFp(curve, -// curve.fromBigInteger(new BigInteger(x.toString("hex"), 16)), -// curve.fromBigInteger(new BigInteger(y.toString("hex"), 16))); - this.P = curve.decodePointHex(key.toString("hex")); - }else{ - if(key.length != bytes) return false; - priv = new BigInteger(key.toString("hex"), 16); - } - }else{ - var n1 = n.subtract(BigInteger.ONE); - var r = new BigInteger(crypto.randomBytes(n.bitLength())); - priv = r.mod(n1).add(BigInteger.ONE); - this.P = c.getG().multiply(priv); - } - if(this.P) - { -// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2); -// this.PublicKey = Buffer.from("04"+pubhex,"hex"); - this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),"hex"); - } - if(priv) - { - this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),"hex"); - this.deriveSharedSecret = function(key) - { - if(!key || !key.P) return false; - var S = key.P.multiply(priv); - return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),"hex"); - } - } -} - - - -/***/ }), -/* 305 */, -/* 306 */, -/* 307 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var bmpNumerals = /0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19/; -var _default = bmpNumerals; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 308 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; -// Standard YAML's Failsafe schema. -// http://www.yaml.org/spec/1.2/spec.html#id2802346 - - - - - -var Schema = __webpack_require__(863); - - -module.exports = new Schema({ - explicit: [ - __webpack_require__(258), - __webpack_require__(503), - __webpack_require__(778) - ] -}); - - -/***/ }), -/* 309 */, -/* 310 */, -/* 311 */, -/* 312 */, -/* 313 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(809); - -__webpack_require__(277); - -__webpack_require__(968); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Builds a RegExp -function _default(regex, map, flags) { - flags = flags || ''; - - if (typeof regex !== 'string') { - if (regex.global && flags.indexOf('g') < 0) { - flags += 'g'; - } - - if (regex.ignoreCase && flags.indexOf('i') < 0) { - flags += 'i'; - } - - if (regex.multiline && flags.indexOf('m') < 0) { - flags += 'm'; - } - - regex = regex.source; - } - - return new RegExp(regex.replace(/#\{(\w+)\}/g, function (match, name) { - var newRegex = map[name] || ''; - - if (typeof newRegex !== 'string') { - newRegex = newRegex.source; - } - - return newRegex; - }), flags); -} - -module.exports = exports.default; - -/***/ }), -/* 314 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_custom(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $rule = this, - $definition = 'definition' + $lvl, - $rDef = $rule.definition, - $closingBraces = ''; - var $compile, $inline, $macro, $ruleValidate, $validateCode; - if ($isData && $rDef.$data) { - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; - } else { - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - if (!$ruleValidate) return; - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - } - var $ruleErrs = $validateCode + '.errors', - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $asyncKeyword = $rDef.async; - if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($isData && $rDef.$data) { - $closingBraces += '}'; - out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; - if ($validateSchema) { - $closingBraces += '}'; - out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; - } - } - if ($inline) { - if ($rDef.statements) { - out += ' ' + ($ruleValidate.validate) + ' '; - } else { - out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; - } - } else if ($macro) { - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - out += ' ' + ($validateCode) + '.call( '; - if (it.opts.passContext) { - out += 'this'; - } else { - out += 'self'; - } - if ($compile || $rDef.schema === false) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; - } - out += ' , (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; - var def_callRuleValidate = out; - out = $$outStack.pop(); - if ($rDef.errors === false) { - out += ' ' + ($valid) + ' = '; - if ($asyncKeyword) { - out += 'await '; - } - out += '' + (def_callRuleValidate) + '; '; - } else { - if ($asyncKeyword) { - $ruleErrs = 'customErrors' + $lvl; - out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; - } else { - out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; - } - } - } - if ($rDef.modifying) { - out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; - } - out += '' + ($closingBraces); - if ($rDef.valid) { - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - out += ' if ( '; - if ($rDef.valid === undefined) { - out += ' !'; - if ($macro) { - out += '' + ($nextValid); - } else { - out += '' + ($valid); - } - } else { - out += ' ' + (!$rDef.valid) + ' '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} - - -/***/ }), -/* 318 */ -/***/ (function(module) { - -module.exports = {"$id":"beforeRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}; - -/***/ }), -/* 319 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var classof = __webpack_require__(324); -var builtinExec = RegExp.prototype.exec; - - // `RegExpExec` abstract operation -// https://tc39.github.io/ecma262/#sec-regexpexec -module.exports = function (R, S) { - var exec = R.exec; - if (typeof exec === 'function') { - var result = exec.call(R, S); - if (typeof result !== 'object') { - throw new TypeError('RegExp exec method returned something other than an Object or null'); - } - return result; - } - if (classof(R) !== 'RegExp') { - throw new TypeError('RegExp#exec called on incompatible receiver'); - } - return builtinExec.call(R, S); -}; - - -/***/ }), -/* 320 */, -/* 321 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -var pIE = __webpack_require__(632); -var createDesc = __webpack_require__(690); -var toIObject = __webpack_require__(78); -var toPrimitive = __webpack_require__(710); -var has = __webpack_require__(975); -var IE8_DOM_DEFINE = __webpack_require__(704); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(843) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 322 */, -/* 323 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = { - read: read, - verify: verify, - sign: sign, - signAsync: signAsync, - write: write -}; - -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var pem = __webpack_require__(268); -var Identity = __webpack_require__(378); -var Signature = __webpack_require__(575); -var Certificate = __webpack_require__(202); -var pkcs8 = __webpack_require__(435); - -/* - * This file is based on RFC5280 (X.509). - */ - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function verify(cert, key) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - var algParts = sig.algo.split('-'); - if (algParts[0] !== key.type) - return (false); - - var blob = sig.cache; - if (blob === undefined) { - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - blob = der.buffer; - } - - var verifier = key.createVerify(algParts[1]); - verifier.write(blob); - return (verifier.verify(sig.signature)); -} - -function Local(i) { - return (asn1.Ber.Context | asn1.Ber.Constructor | i); -} - -function Context(i) { - return (asn1.Ber.Context | i); -} - -var SIGN_ALGS = { - 'rsa-md5': '1.2.840.113549.1.1.4', - 'rsa-sha1': '1.2.840.113549.1.1.5', - 'rsa-sha256': '1.2.840.113549.1.1.11', - 'rsa-sha384': '1.2.840.113549.1.1.12', - 'rsa-sha512': '1.2.840.113549.1.1.13', - 'dsa-sha1': '1.2.840.10040.4.3', - 'dsa-sha256': '2.16.840.1.101.3.4.3.2', - 'ecdsa-sha1': '1.2.840.10045.4.1', - 'ecdsa-sha256': '1.2.840.10045.4.3.2', - 'ecdsa-sha384': '1.2.840.10045.4.3.3', - 'ecdsa-sha512': '1.2.840.10045.4.3.4', - 'ed25519-sha512': '1.3.101.112' -}; -Object.keys(SIGN_ALGS).forEach(function (k) { - SIGN_ALGS[SIGN_ALGS[k]] = k; -}); -SIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5'; -SIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1'; - -var EXTS = { - 'issuerKeyId': '2.5.29.35', - 'altName': '2.5.29.17', - 'basicConstraints': '2.5.29.19', - 'keyUsage': '2.5.29.15', - 'extKeyUsage': '2.5.29.37' -}; - -function read(buf, options) { - if (typeof (buf) === 'string') { - buf = Buffer.from(buf, 'binary'); - } - assert.buffer(buf, 'buf'); - - var der = new asn1.BerReader(buf); - - der.readSequence(); - if (Math.abs(der.length - der.remain) > 1) { - throw (new Error('DER sequence does not contain whole byte ' + - 'stream')); - } - - var tbsStart = der.offset; - der.readSequence(); - var sigOffset = der.offset + der.length; - var tbsEnd = sigOffset; - - if (der.peek() === Local(0)) { - der.readSequence(Local(0)); - var version = der.readInt(); - assert.ok(version <= 3, - 'only x.509 versions up to v3 supported'); - } - - var cert = {}; - cert.signatures = {}; - var sig = (cert.signatures.x509 = {}); - sig.extras = {}; - - cert.serial = readMPInt(der, 'serial'); - - der.readSequence(); - var after = der.offset + der.length; - var certAlgOid = der.readOID(); - var certAlg = SIGN_ALGS[certAlgOid]; - if (certAlg === undefined) - throw (new Error('unknown signature algorithm ' + certAlgOid)); - - der._offset = after; - cert.issuer = Identity.parseAsn1(der); - - der.readSequence(); - cert.validFrom = readDate(der); - cert.validUntil = readDate(der); - - cert.subjects = [Identity.parseAsn1(der)]; - - der.readSequence(); - after = der.offset + der.length; - cert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der); - der._offset = after; - - /* issuerUniqueID */ - if (der.peek() === Local(1)) { - der.readSequence(Local(1)); - sig.extras.issuerUniqueID = - buf.slice(der.offset, der.offset + der.length); - der._offset += der.length; - } - - /* subjectUniqueID */ - if (der.peek() === Local(2)) { - der.readSequence(Local(2)); - sig.extras.subjectUniqueID = - buf.slice(der.offset, der.offset + der.length); - der._offset += der.length; - } - - /* extensions */ - if (der.peek() === Local(3)) { - der.readSequence(Local(3)); - var extEnd = der.offset + der.length; - der.readSequence(); - - while (der.offset < extEnd) - readExtension(cert, buf, der); - - assert.strictEqual(der.offset, extEnd); - } - - assert.strictEqual(der.offset, sigOffset); - - der.readSequence(); - after = der.offset + der.length; - var sigAlgOid = der.readOID(); - var sigAlg = SIGN_ALGS[sigAlgOid]; - if (sigAlg === undefined) - throw (new Error('unknown signature algorithm ' + sigAlgOid)); - der._offset = after; - - var sigData = der.readString(asn1.Ber.BitString, true); - if (sigData[0] === 0) - sigData = sigData.slice(1); - var algParts = sigAlg.split('-'); - - sig.signature = Signature.parse(sigData, algParts[0], 'asn1'); - sig.signature.hashAlgorithm = algParts[1]; - sig.algo = sigAlg; - sig.cache = buf.slice(tbsStart, tbsEnd); - - return (new Certificate(cert)); -} - -function readDate(der) { - if (der.peek() === asn1.Ber.UTCTime) { - return (utcTimeToDate(der.readString(asn1.Ber.UTCTime))); - } else if (der.peek() === asn1.Ber.GeneralizedTime) { - return (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime))); - } else { - throw (new Error('Unsupported date format')); - } -} - -function writeDate(der, date) { - if (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) { - der.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime); - } else { - der.writeString(dateToUTCTime(date), asn1.Ber.UTCTime); - } -} - -/* RFC5280, section 4.2.1.6 (GeneralName type) */ -var ALTNAME = { - OtherName: Local(0), - RFC822Name: Context(1), - DNSName: Context(2), - X400Address: Local(3), - DirectoryName: Local(4), - EDIPartyName: Local(5), - URI: Context(6), - IPAddress: Context(7), - OID: Context(8) -}; - -/* RFC5280, section 4.2.1.12 (KeyPurposeId) */ -var EXTPURPOSE = { - 'serverAuth': '1.3.6.1.5.5.7.3.1', - 'clientAuth': '1.3.6.1.5.5.7.3.2', - 'codeSigning': '1.3.6.1.5.5.7.3.3', - - /* See https://github.com/joyent/oid-docs/blob/master/root.md */ - 'joyentDocker': '1.3.6.1.4.1.38678.1.4.1', - 'joyentCmon': '1.3.6.1.4.1.38678.1.4.2' -}; -var EXTPURPOSE_REV = {}; -Object.keys(EXTPURPOSE).forEach(function (k) { - EXTPURPOSE_REV[EXTPURPOSE[k]] = k; -}); - -var KEYUSEBITS = [ - 'signature', 'identity', 'keyEncryption', - 'encryption', 'keyAgreement', 'ca', 'crl' -]; - -function readExtension(cert, buf, der) { - der.readSequence(); - var after = der.offset + der.length; - var extId = der.readOID(); - var id; - var sig = cert.signatures.x509; - if (!sig.extras.exts) - sig.extras.exts = []; - - var critical; - if (der.peek() === asn1.Ber.Boolean) - critical = der.readBoolean(); - - switch (extId) { - case (EXTS.basicConstraints): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - var bcEnd = der.offset + der.length; - var ca = false; - if (der.peek() === asn1.Ber.Boolean) - ca = der.readBoolean(); - if (cert.purposes === undefined) - cert.purposes = []; - if (ca === true) - cert.purposes.push('ca'); - var bc = { oid: extId, critical: critical }; - if (der.offset < bcEnd && der.peek() === asn1.Ber.Integer) - bc.pathLen = der.readInt(); - sig.extras.exts.push(bc); - break; - case (EXTS.extKeyUsage): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - if (cert.purposes === undefined) - cert.purposes = []; - var ekEnd = der.offset + der.length; - while (der.offset < ekEnd) { - var oid = der.readOID(); - cert.purposes.push(EXTPURPOSE_REV[oid] || oid); - } - /* - * This is a bit of a hack: in the case where we have a cert - * that's only allowed to do serverAuth or clientAuth (and not - * the other), we want to make sure all our Subjects are of - * the right type. But we already parsed our Subjects and - * decided if they were hosts or users earlier (since it appears - * first in the cert). - * - * So we go through and mutate them into the right kind here if - * it doesn't match. This might not be hugely beneficial, as it - * seems that single-purpose certs are not often seen in the - * wild. - */ - if (cert.purposes.indexOf('serverAuth') !== -1 && - cert.purposes.indexOf('clientAuth') === -1) { - cert.subjects.forEach(function (ide) { - if (ide.type !== 'host') { - ide.type = 'host'; - ide.hostname = ide.uid || - ide.email || - ide.components[0].value; - } - }); - } else if (cert.purposes.indexOf('clientAuth') !== -1 && - cert.purposes.indexOf('serverAuth') === -1) { - cert.subjects.forEach(function (ide) { - if (ide.type !== 'user') { - ide.type = 'user'; - ide.uid = ide.hostname || - ide.email || - ide.components[0].value; - } - }); - } - sig.extras.exts.push({ oid: extId, critical: critical }); - break; - case (EXTS.keyUsage): - der.readSequence(asn1.Ber.OctetString); - var bits = der.readString(asn1.Ber.BitString, true); - var setBits = readBitField(bits, KEYUSEBITS); - setBits.forEach(function (bit) { - if (cert.purposes === undefined) - cert.purposes = []; - if (cert.purposes.indexOf(bit) === -1) - cert.purposes.push(bit); - }); - sig.extras.exts.push({ oid: extId, critical: critical, - bits: bits }); - break; - case (EXTS.altName): - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - var aeEnd = der.offset + der.length; - while (der.offset < aeEnd) { - switch (der.peek()) { - case ALTNAME.OtherName: - case ALTNAME.EDIPartyName: - der.readSequence(); - der._offset += der.length; - break; - case ALTNAME.OID: - der.readOID(ALTNAME.OID); - break; - case ALTNAME.RFC822Name: - /* RFC822 specifies email addresses */ - var email = der.readString(ALTNAME.RFC822Name); - id = Identity.forEmail(email); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - case ALTNAME.DirectoryName: - der.readSequence(ALTNAME.DirectoryName); - id = Identity.parseAsn1(der); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - case ALTNAME.DNSName: - var host = der.readString( - ALTNAME.DNSName); - id = Identity.forHost(host); - if (!cert.subjects[0].equals(id)) - cert.subjects.push(id); - break; - default: - der.readString(der.peek()); - break; - } - } - sig.extras.exts.push({ oid: extId, critical: critical }); - break; - default: - sig.extras.exts.push({ - oid: extId, - critical: critical, - data: der.readString(asn1.Ber.OctetString, true) - }); - break; - } - - der._offset = after; -} - -var UTCTIME_RE = - /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; -function utcTimeToDate(t) { - var m = t.match(UTCTIME_RE); - assert.ok(m, 'timestamps must be in UTC'); - var d = new Date(); - - var thisYear = d.getUTCFullYear(); - var century = Math.floor(thisYear / 100) * 100; - - var year = parseInt(m[1], 10); - if (thisYear % 100 < 50 && year >= 60) - year += (century - 1); - else - year += century; - d.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10)); - d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); - if (m[6] && m[6].length > 0) - d.setUTCSeconds(parseInt(m[6], 10)); - return (d); -} - -var GTIME_RE = - /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; -function gTimeToDate(t) { - var m = t.match(GTIME_RE); - assert.ok(m); - var d = new Date(); - - d.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1, - parseInt(m[3], 10)); - d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); - if (m[6] && m[6].length > 0) - d.setUTCSeconds(parseInt(m[6], 10)); - return (d); -} - -function zeroPad(n, m) { - if (m === undefined) - m = 2; - var s = '' + n; - while (s.length < m) - s = '0' + s; - return (s); -} - -function dateToUTCTime(d) { - var s = ''; - s += zeroPad(d.getUTCFullYear() % 100); - s += zeroPad(d.getUTCMonth() + 1); - s += zeroPad(d.getUTCDate()); - s += zeroPad(d.getUTCHours()); - s += zeroPad(d.getUTCMinutes()); - s += zeroPad(d.getUTCSeconds()); - s += 'Z'; - return (s); -} - -function dateToGTime(d) { - var s = ''; - s += zeroPad(d.getUTCFullYear(), 4); - s += zeroPad(d.getUTCMonth() + 1); - s += zeroPad(d.getUTCDate()); - s += zeroPad(d.getUTCHours()); - s += zeroPad(d.getUTCMinutes()); - s += zeroPad(d.getUTCSeconds()); - s += 'Z'; - return (s); -} - -function sign(cert, key) { - if (cert.signatures.x509 === undefined) - cert.signatures.x509 = {}; - var sig = cert.signatures.x509; - - sig.algo = key.type + '-' + key.defaultHashAlgorithm(); - if (SIGN_ALGS[sig.algo] === undefined) - return (false); - - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - var blob = der.buffer; - sig.cache = blob; - - var signer = key.createSign(); - signer.write(blob); - cert.signatures.x509.signature = signer.sign(); - - return (true); -} - -function signAsync(cert, signer, done) { - if (cert.signatures.x509 === undefined) - cert.signatures.x509 = {}; - var sig = cert.signatures.x509; - - var der = new asn1.BerWriter(); - writeTBSCert(cert, der); - var blob = der.buffer; - sig.cache = blob; - - signer(blob, function (err, signature) { - if (err) { - done(err); - return; - } - sig.algo = signature.type + '-' + signature.hashAlgorithm; - if (SIGN_ALGS[sig.algo] === undefined) { - done(new Error('Invalid signing algorithm "' + - sig.algo + '"')); - return; - } - sig.signature = signature; - done(); - }); -} - -function write(cert, options) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - var der = new asn1.BerWriter(); - der.startSequence(); - if (sig.cache) { - der._ensure(sig.cache.length); - sig.cache.copy(der._buf, der._offset); - der._offset += sig.cache.length; - } else { - writeTBSCert(cert, der); - } - - der.startSequence(); - der.writeOID(SIGN_ALGS[sig.algo]); - if (sig.algo.match(/^rsa-/)) - der.writeNull(); - der.endSequence(); - - var sigData = sig.signature.toBuffer('asn1'); - var data = Buffer.alloc(sigData.length + 1); - data[0] = 0; - sigData.copy(data, 1); - der.writeBuffer(data, asn1.Ber.BitString); - der.endSequence(); - - return (der.buffer); -} - -function writeTBSCert(cert, der) { - var sig = cert.signatures.x509; - assert.object(sig, 'x509 signature'); - - der.startSequence(); - - der.startSequence(Local(0)); - der.writeInt(2); - der.endSequence(); - - der.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer); - - der.startSequence(); - der.writeOID(SIGN_ALGS[sig.algo]); - if (sig.algo.match(/^rsa-/)) - der.writeNull(); - der.endSequence(); - - cert.issuer.toAsn1(der); - - der.startSequence(); - writeDate(der, cert.validFrom); - writeDate(der, cert.validUntil); - der.endSequence(); - - var subject = cert.subjects[0]; - var altNames = cert.subjects.slice(1); - subject.toAsn1(der); - - pkcs8.writePkcs8(der, cert.subjectKey); - - if (sig.extras && sig.extras.issuerUniqueID) { - der.writeBuffer(sig.extras.issuerUniqueID, Local(1)); - } - - if (sig.extras && sig.extras.subjectUniqueID) { - der.writeBuffer(sig.extras.subjectUniqueID, Local(2)); - } - - if (altNames.length > 0 || subject.type === 'host' || - (cert.purposes !== undefined && cert.purposes.length > 0) || - (sig.extras && sig.extras.exts)) { - der.startSequence(Local(3)); - der.startSequence(); - - var exts = []; - if (cert.purposes !== undefined && cert.purposes.length > 0) { - exts.push({ - oid: EXTS.basicConstraints, - critical: true - }); - exts.push({ - oid: EXTS.keyUsage, - critical: true - }); - exts.push({ - oid: EXTS.extKeyUsage, - critical: true - }); - } - exts.push({ oid: EXTS.altName }); - if (sig.extras && sig.extras.exts) - exts = sig.extras.exts; - - for (var i = 0; i < exts.length; ++i) { - der.startSequence(); - der.writeOID(exts[i].oid); - - if (exts[i].critical !== undefined) - der.writeBoolean(exts[i].critical); - - if (exts[i].oid === EXTS.altName) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - if (subject.type === 'host') { - der.writeString(subject.hostname, - Context(2)); - } - for (var j = 0; j < altNames.length; ++j) { - if (altNames[j].type === 'host') { - der.writeString( - altNames[j].hostname, - ALTNAME.DNSName); - } else if (altNames[j].type === - 'email') { - der.writeString( - altNames[j].email, - ALTNAME.RFC822Name); - } else { - /* - * Encode anything else as a - * DN style name for now. - */ - der.startSequence( - ALTNAME.DirectoryName); - altNames[j].toAsn1(der); - der.endSequence(); - } - } - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.basicConstraints) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - var ca = (cert.purposes.indexOf('ca') !== -1); - var pathLen = exts[i].pathLen; - der.writeBoolean(ca); - if (pathLen !== undefined) - der.writeInt(pathLen); - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.extKeyUsage) { - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - cert.purposes.forEach(function (purpose) { - if (purpose === 'ca') - return; - if (KEYUSEBITS.indexOf(purpose) !== -1) - return; - var oid = purpose; - if (EXTPURPOSE[purpose] !== undefined) - oid = EXTPURPOSE[purpose]; - der.writeOID(oid); - }); - der.endSequence(); - der.endSequence(); - } else if (exts[i].oid === EXTS.keyUsage) { - der.startSequence(asn1.Ber.OctetString); - /* - * If we parsed this certificate from a byte - * stream (i.e. we didn't generate it in sshpk) - * then we'll have a ".bits" property on the - * ext with the original raw byte contents. - * - * If we have this, use it here instead of - * regenerating it. This guarantees we output - * the same data we parsed, so signatures still - * validate. - */ - if (exts[i].bits !== undefined) { - der.writeBuffer(exts[i].bits, - asn1.Ber.BitString); - } else { - var bits = writeBitField(cert.purposes, - KEYUSEBITS); - der.writeBuffer(bits, - asn1.Ber.BitString); - } - der.endSequence(); - } else { - der.writeBuffer(exts[i].data, - asn1.Ber.OctetString); - } - - der.endSequence(); - } - - der.endSequence(); - der.endSequence(); - } - - der.endSequence(); -} - -/* - * Reads an ASN.1 BER bitfield out of the Buffer produced by doing - * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw - * contents of the BitString tag, which is a count of unused bits followed by - * the bits as a right-padded byte string. - * - * `bits` is the Buffer, `bitIndex` should contain an array of string names - * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec. - * - * Returns an array of Strings, the names of the bits that were set to 1. - */ -function readBitField(bits, bitIndex) { - var bitLen = 8 * (bits.length - 1) - bits[0]; - var setBits = {}; - for (var i = 0; i < bitLen; ++i) { - var byteN = 1 + Math.floor(i / 8); - var bit = 7 - (i % 8); - var mask = 1 << bit; - var bitVal = ((bits[byteN] & mask) !== 0); - var name = bitIndex[i]; - if (bitVal && typeof (name) === 'string') { - setBits[name] = true; - } - } - return (Object.keys(setBits)); -} - -/* - * `setBits` is an array of strings, containing the names for each bit that - * sould be set to 1. `bitIndex` is same as in `readBitField()`. - * - * Returns a Buffer, ready to be written out with `BerWriter#writeString()`. - */ -function writeBitField(setBits, bitIndex) { - var bitLen = bitIndex.length; - var blen = Math.ceil(bitLen / 8); - var unused = blen * 8 - bitLen; - var bits = Buffer.alloc(1 + blen); // zero-filled - bits[0] = unused; - for (var i = 0; i < bitLen; ++i) { - var byteN = 1 + Math.floor(i / 8); - var bit = 7 - (i % 8); - var mask = 1 << bit; - var name = bitIndex[i]; - if (name === undefined) - continue; - var bitVal = (setBits.indexOf(name) !== -1); - if (bitVal) { - bits[byteN] |= mask; - } - } - return (bits); -} - - -/***/ }), -/* 324 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof = __webpack_require__(189); -var TAG = __webpack_require__(621)('toStringTag'); -// ES3 wrong here -var ARG = cof(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (e) { /* empty */ } -}; - -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof(O) - // ES3 arguments fallback - : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; - - -/***/ }), -/* 325 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2011 Mark Cavage All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = __webpack_require__(249); - - - -// --- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; - - -/***/ }), -/* 326 */ -/***/ (function(module) { - -module.exports = {"$id":"cookie.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"domain":{"type":"string"},"expires":{"type":["string","null"],"format":"date-time"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"comment":{"type":"string"}}}; - -/***/ }), -/* 327 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_ref(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $async, $refCode; - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - $async = it.async; - $refCode = 'validate'; - } else { - $async = it.root.schema.$async === true; - $refCode = 'root.refVal[0]'; - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = it.MissingRefError.message(it.baseId, $schema); - if (it.opts.missingRefs == 'fail') { - it.logger.error($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - it.logger.warn($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - throw new it.MissingRefError(it.baseId, $schema, $message); - } - } else if ($refVal.inline) { - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - } - } else { - $async = $refVal.$async === true || (it.async && $refVal.$async !== false); - $refCode = $refVal.code; - } - } - if ($refCode) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - if (it.opts.passContext) { - out += ' ' + ($refCode) + '.call(this, '; - } else { - out += ' ' + ($refCode) + '( '; - } - out += ' ' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; - var __callValidate = out; - out = $$outStack.pop(); - if ($async) { - if (!it.async) throw new Error('async schema referenced by sync schema'); - if ($breakOnError) { - out += ' var ' + ($valid) + '; '; - } - out += ' try { await ' + (__callValidate) + '; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = true; '; - } - out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = false; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - } - } else { - out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } - return out; -} - - -/***/ }), -/* 328 */, -/* 329 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _crypto = _interopRequireDefault(__webpack_require__(417)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('sha1').update(bytes).digest(); -} - -var _default = sha1; -exports.default = _default; - -/***/ }), -/* 330 */, -/* 331 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var shared = __webpack_require__(881)('keys'); -var uid = __webpack_require__(750); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 332 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(195); -var $filter = __webpack_require__(948)(2); - -$export($export.P + $export.F * !__webpack_require__(482)([].filter, true), 'Array', { - // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments[1]); - } -}); - - -/***/ }), -/* 333 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(206); -var enumBugKeys = __webpack_require__(5); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 334 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = -{ - parallel : __webpack_require__(424), - serial : __webpack_require__(91), - serialOrdered : __webpack_require__(192) -}; - - -/***/ }), -/* 335 */ -/***/ (function(module) { - -module.exports = {"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}; - -/***/ }), -/* 336 */, -/* 337 */ -/***/ (function(module) { - -module.exports = {"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}; - -/***/ }), -/* 338 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -const agent_1 = __importDefault(__webpack_require__(40)); -function createHttpsProxyAgent(opts) { - return new agent_1.default(opts); -} -(function (createHttpsProxyAgent) { - createHttpsProxyAgent.HttpsProxyAgent = agent_1.default; - createHttpsProxyAgent.prototype = agent_1.default.prototype; -})(createHttpsProxyAgent || (createHttpsProxyAgent = {})); -module.exports = createHttpsProxyAgent; -//# sourceMappingURL=index.js.map - -/***/ }), -/* 339 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var cyrillicLettersAndMarks = /\u0400-\u04FF/; -var _default = cyrillicLettersAndMarks; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 340 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); - -var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); - -var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// These URL validation pattern strings are based on the ABNF from RFC 3986 -var validateUrlPchar = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + '[:|@]' + ')', { - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"] -}, 'i'); -var _default = validateUrlPchar; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 341 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); - -var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validTcoUrl = (0, _regexSupplant["default"])(/^https?:\/\/t\.co\/([a-z0-9]+)(?:\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?/, { - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] -}, 'i'); -var _default = validTcoUrl; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 342 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validDomain = _interopRequireDefault(__webpack_require__(574)); - -var _validPortNumber = _interopRequireDefault(__webpack_require__(547)); - -var _validUrlPath = _interopRequireDefault(__webpack_require__(671)); - -var _validUrlPrecedingChars = _interopRequireDefault(__webpack_require__(533)); - -var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); - -var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var extractUrl = (0, _regexSupplant["default"])('(' + // $1 total match -'(#{validUrlPrecedingChars})' + // $2 Preceeding chracter -'(' + // $3 URL -'(https?:\\/\\/)?' + // $4 Protocol (optional) -'(#{validDomain})' + // $5 Domain(s) -'(?::(#{validPortNumber}))?' + // $6 Port number (optional) -'(\\/#{validUrlPath}*)?' + // $7 URL Path -'(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $8 Query String -')' + ')', { - validUrlPrecedingChars: _validUrlPrecedingChars["default"], - validDomain: _validDomain["default"], - validPortNumber: _validPortNumber["default"], - validUrlPath: _validUrlPath["default"], - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] -}, 'gi'); -var _default = extractUrl; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 343 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_properties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}).filter(notProto), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties).filter(notProto), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { - var $requiredHash = it.util.toHash($required); - } - - function notProto(p) { - return p !== '__proto__'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined;'; - } - if ($checkAdditional) { - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 8) { - out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is an invalid additional property'; - } else { - out += 'should NOT have additional properties'; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ' ) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($pPropertyKeys.length) { - var arr4 = $pPropertyKeys; - if (arr4) { - var $pProperty, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $pProperty = arr4[i4 += 1]; - var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), -/* 344 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; -// JS-YAML's default schema for `safeLoad` function. -// It is not described in the YAML specification. -// -// This schema is based on standard YAML's Core schema and includes most of -// extra types described at YAML tag repository. (http://yaml.org/type/) - - - - - -module.exports = __webpack_require__(77).extend({ - implicit: [ - __webpack_require__(244), - __webpack_require__(36) - ], - explicit: [ - __webpack_require__(848), - __webpack_require__(919), - __webpack_require__(224), - __webpack_require__(168) - ] -}); - - -/***/ }), -/* 345 */, -/* 346 */, -/* 347 */ -/***/ (function(module) { - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]]]).join(''); -} - -module.exports = bytesToUuid; - - -/***/ }), -/* 348 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -__webpack_require__(210); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 - -/** - * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js - */ -var convertUnicodeIndices = function convertUnicodeIndices(text, entities, indicesInUTF16) { - if (entities.length === 0) { - return; - } - - var charIndex = 0; - var codePointIndex = 0; // sort entities by start index - - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var entityIndex = 0; - var entity = entities[0]; - - while (charIndex < text.length) { - if (entity.indices[0] === (indicesInUTF16 ? charIndex : codePointIndex)) { - var len = entity.indices[1] - entity.indices[0]; - entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; - entity.indices[1] = entity.indices[0] + len; - entityIndex++; - - if (entityIndex === entities.length) { - // no more entity - break; - } - - entity = entities[entityIndex]; - } - - var c = text.charCodeAt(charIndex); - - if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { - // Found high surrogate char - c = text.charCodeAt(charIndex + 1); - - if (c >= 0xdc00 && c <= 0xdfff) { - // Found surrogate pair - charIndex++; - } - } - - codePointIndex++; - charIndex++; - } -}; - -var _default = convertUnicodeIndices; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 349 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -var Store = __webpack_require__(627).Store; -var permuteDomain = __webpack_require__(383).permuteDomain; -var pathMatch = __webpack_require__(54).pathMatch; -var util = __webpack_require__(669); - -function MemoryCookieStore() { - Store.call(this); - this.idx = {}; -} -util.inherits(MemoryCookieStore, Store); -exports.MemoryCookieStore = MemoryCookieStore; -MemoryCookieStore.prototype.idx = null; - -// Since it's just a struct in RAM, this Store is synchronous -MemoryCookieStore.prototype.synchronous = true; - -// force a default depth: -MemoryCookieStore.prototype.inspect = function() { - return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; -}; - -// Use the new custom inspection symbol to add the custom inspect function if -// available. -if (util.inspect.custom) { - MemoryCookieStore.prototype[util.inspect.custom] = MemoryCookieStore.prototype.inspect; -} - -MemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) { - if (!this.idx[domain]) { - return cb(null,undefined); - } - if (!this.idx[domain][path]) { - return cb(null,undefined); - } - return cb(null,this.idx[domain][path][key]||null); -}; - -MemoryCookieStore.prototype.findCookies = function(domain, path, cb) { - var results = []; - if (!domain) { - return cb(null,[]); - } - - var pathMatcher; - if (!path) { - // null means "all paths" - pathMatcher = function matchAll(domainIndex) { - for (var curPath in domainIndex) { - var pathIndex = domainIndex[curPath]; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }; - - } else { - pathMatcher = function matchRFC(domainIndex) { - //NOTE: we should use path-match algorithm from S5.1.4 here - //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299) - Object.keys(domainIndex).forEach(function (cookiePath) { - if (pathMatch(path, cookiePath)) { - var pathIndex = domainIndex[cookiePath]; - - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }); - }; - } - - var domains = permuteDomain(domain) || [domain]; - var idx = this.idx; - domains.forEach(function(curDomain) { - var domainIndex = idx[curDomain]; - if (!domainIndex) { - return; - } - pathMatcher(domainIndex); - }); - - cb(null,results); -}; - -MemoryCookieStore.prototype.putCookie = function(cookie, cb) { - if (!this.idx[cookie.domain]) { - this.idx[cookie.domain] = {}; - } - if (!this.idx[cookie.domain][cookie.path]) { - this.idx[cookie.domain][cookie.path] = {}; - } - this.idx[cookie.domain][cookie.path][cookie.key] = cookie; - cb(null); -}; - -MemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) { - // updateCookie() may avoid updating cookies that are identical. For example, - // lastAccessed may not be important to some stores and an equality - // comparison could exclude that field. - this.putCookie(newCookie,cb); -}; - -MemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) { - if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { - delete this.idx[domain][path][key]; - } - cb(null); -}; - -MemoryCookieStore.prototype.removeCookies = function(domain, path, cb) { - if (this.idx[domain]) { - if (path) { - delete this.idx[domain][path]; - } else { - delete this.idx[domain]; - } - } - return cb(null); -}; - -MemoryCookieStore.prototype.getAllCookies = function(cb) { - var cookies = []; - var idx = this.idx; - - var domains = Object.keys(idx); - domains.forEach(function(domain) { - var paths = Object.keys(idx[domain]); - paths.forEach(function(path) { - var keys = Object.keys(idx[domain][path]); - keys.forEach(function(key) { - if (key !== null) { - cookies.push(idx[domain][path][key]); - } - }); - }); - }); - - // Sort by creationIndex so deserializing retains the creation order. - // When implementing your own store, this SHOULD retain the order too - cookies.sort(function(a,b) { - return (a.creationIndex||0) - (b.creationIndex||0); - }); - - cb(null, cookies); -}; - - -/***/ }), -/* 350 */, -/* 351 */, -/* 352 */, -/* 353 */ -/***/ (function(module) { - -/** - * JSONSchema Validator - Validates JavaScript objects using JSON Schemas - * (http://www.json.com/json-schema-proposal/) - * Licensed under AFL-2.1 OR BSD-3-Clause -To use the validator call the validate function with an instance object and an optional schema object. -If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), -that schema will be used to validate and the schema parameter is not necessary (if both exist, -both validations will occur). -The validate method will return an array of validation errors. If there are no errors, then an -empty list will be returned. A validation error will have two properties: -"property" which indicates which property had the error -"message" which indicates what the error was - */ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define([], function () { - return factory(); - }); - } else if ( true && module.exports) { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals - root.jsonSchema = factory(); - } -}(this, function () {// setup primitive classes to be JSON Schema types -var exports = validate -exports.Integer = {type:"integer"}; -var primitiveConstructors = { - String: String, - Boolean: Boolean, - Number: Number, - Object: Object, - Array: Array, - Date: Date -} -exports.validate = validate; -function validate(/*Any*/instance,/*Object*/schema) { - // Summary: - // To use the validator call JSONSchema.validate with an instance object and an optional schema object. - // If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), - // that schema will be used to validate and the schema parameter is not necessary (if both exist, - // both validations will occur). - // The validate method will return an object with two properties: - // valid: A boolean indicating if the instance is valid by the schema - // errors: An array of validation errors. If there are no errors, then an - // empty list will be returned. A validation error will have two properties: - // property: which indicates which property had the error - // message: which indicates what the error was - // - return validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false}); - }; -exports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) { - // Summary: - // The checkPropertyChange method will check to see if an value can legally be in property with the given schema - // This is slightly different than the validate method in that it will fail if the schema is readonly and it will - // not check for self-validation, it is assumed that the passed in value is already internally valid. - // The checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for - // information. - // - return validate(value, schema, {changing: property || "property"}); - }; -var validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) { - - if (!options) options = {}; - var _changing = options.changing; - - function getType(schema){ - return schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase()); - } - var errors = []; - // validate a value against a property definition - function checkProp(value, schema, path,i){ - - var l; - path += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i; - function addError(message){ - errors.push({property:path,message:message}); - } - - if((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){ - if(typeof schema == 'function'){ - if(!(value instanceof schema)){ - addError("is not an instance of the class/constructor " + schema.name); - } - }else if(schema){ - addError("Invalid schema/property definition " + schema); - } - return null; - } - if(_changing && schema.readonly){ - addError("is a readonly field, it can not be changed"); - } - if(schema['extends']){ // if it extends another schema, it must pass that schema as well - checkProp(value,schema['extends'],path,i); - } - // validate a value against a type definition - function checkType(type,value){ - if(type){ - if(typeof type == 'string' && type != 'any' && - (type == 'null' ? value !== null : typeof value != type) && - !(value instanceof Array && type == 'array') && - !(value instanceof Date && type == 'date') && - !(type == 'integer' && value%1===0)){ - return [{property:path,message:value + " - " + (typeof value) + " value found, but a " + type + " is required"}]; - } - if(type instanceof Array){ - var unionErrors=[]; - for(var j = 0; j < type.length; j++){ // a union type - if(!(unionErrors=checkType(type[j],value)).length){ - break; - } - } - if(unionErrors.length){ - return unionErrors; - } - }else if(typeof type == 'object'){ - var priorErrors = errors; - errors = []; - checkProp(value,type,path); - var theseErrors = errors; - errors = priorErrors; - return theseErrors; - } - } - return []; - } - if(value === undefined){ - if(schema.required){ - addError("is missing and it is required"); - } - }else{ - errors = errors.concat(checkType(getType(schema),value)); - if(schema.disallow && !checkType(schema.disallow,value).length){ - addError(" disallowed value was matched"); - } - if(value !== null){ - if(value instanceof Array){ - if(schema.items){ - var itemsIsArray = schema.items instanceof Array; - var propDef = schema.items; - for (i = 0, l = value.length; i < l; i += 1) { - if (itemsIsArray) - propDef = schema.items[i]; - if (options.coerce) - value[i] = options.coerce(value[i], propDef); - errors.concat(checkProp(value[i],propDef,path,i)); - } - } - if(schema.minItems && value.length < schema.minItems){ - addError("There must be a minimum of " + schema.minItems + " in the array"); - } - if(schema.maxItems && value.length > schema.maxItems){ - addError("There must be a maximum of " + schema.maxItems + " in the array"); - } - }else if(schema.properties || schema.additionalProperties){ - errors.concat(checkObj(value, schema.properties, path, schema.additionalProperties)); - } - if(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){ - addError("does not match the regex pattern " + schema.pattern); - } - if(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){ - addError("may only be " + schema.maxLength + " characters long"); - } - if(schema.minLength && typeof value == 'string' && value.length < schema.minLength){ - addError("must be at least " + schema.minLength + " characters long"); - } - if(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum && - schema.minimum > value){ - addError("must have a minimum value of " + schema.minimum); - } - if(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum && - schema.maximum < value){ - addError("must have a maximum value of " + schema.maximum); - } - if(schema['enum']){ - var enumer = schema['enum']; - l = enumer.length; - var found; - for(var j = 0; j < l; j++){ - if(enumer[j]===value){ - found=1; - break; - } - } - if(!found){ - addError("does not have a value in the enumeration " + enumer.join(", ")); - } - } - if(typeof schema.maxDecimal == 'number' && - (value.toString().match(new RegExp("\\.[0-9]{" + (schema.maxDecimal + 1) + ",}")))){ - addError("may only have " + schema.maxDecimal + " digits of decimal places"); - } - } - } - return null; - } - // validate an object against a schema - function checkObj(instance,objTypeDef,path,additionalProp){ - - if(typeof objTypeDef =='object'){ - if(typeof instance != 'object' || instance instanceof Array){ - errors.push({property:path,message:"an object is required"}); - } - - for(var i in objTypeDef){ - if(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){ - var value = instance.hasOwnProperty(i) ? instance[i] : undefined; - // skip _not_ specified properties - if (value === undefined && options.existingOnly) continue; - var propDef = objTypeDef[i]; - // set default - if(value === undefined && propDef["default"]){ - value = instance[i] = propDef["default"]; - } - if(options.coerce && i in instance){ - value = instance[i] = options.coerce(value, propDef); - } - checkProp(value,propDef,path,i); - } - } - } - for(i in instance){ - if(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){ - if (options.filter) { - delete instance[i]; - continue; - } else { - errors.push({property:path,message:"The property " + i + - " is not defined in the schema and the schema does not allow additional properties"}); - } - } - var requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires; - if(requires && !(requires in instance)){ - errors.push({property:path,message:"the presence of the property " + i + " requires that " + requires + " also be present"}); - } - value = instance[i]; - if(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){ - if(options.coerce){ - value = instance[i] = options.coerce(value, additionalProp); - } - checkProp(value,additionalProp,path,i); - } - if(!_changing && value && value.$schema){ - errors = errors.concat(checkProp(value,value.$schema,path,i)); - } - } - return errors; - } - if(schema){ - checkProp(instance,schema,'',_changing || ''); - } - if(!_changing && instance && instance.$schema){ - checkProp(instance,instance.$schema,'',''); - } - return {valid:!errors.length,errors:errors}; -}; -exports.mustBeValid = function(result){ - // summary: - // This checks to ensure that the result is valid and will throw an appropriate error message if it is not - // result: the result returned from checkPropertyChange or validate - if(!result.valid){ - throw new TypeError(result.errors.map(function(error){return "for property " + error.property + ': ' + error.message;}).join(", \n")); - } -} - -return exports; -})); - - -/***/ }), -/* 354 */, -/* 355 */, -/* 356 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -exports.isPlainObject = isPlainObject; - - -/***/ }), -/* 357 */ -/***/ (function(module) { - -module.exports = require("assert"); - -/***/ }), -/* 358 */, -/* 359 */, -/* 360 */, -/* 361 */, -/* 362 */ -/***/ (function(module) { - -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; - - -/***/ }), -/* 363 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - Verifier: Verifier, - Signer: Signer -}; - -var nacl = __webpack_require__(196); -var stream = __webpack_require__(413); -var util = __webpack_require__(669); -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var Signature = __webpack_require__(575); - -function Verifier(key, hashAlgo) { - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Verifier, stream.Writable); - -Verifier.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Verifier.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = Buffer.from(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Verifier.prototype.verify = function (signature, fmt) { - var sig; - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== 'ed25519') - return (false); - sig = signature.toBuffer('raw'); - - } else if (typeof (signature) === 'string') { - sig = Buffer.from(signature, 'base64'); - - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - } - - assert.buffer(sig); - return (nacl.sign.detached.verify( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(sig), - new Uint8Array(this.key.part.A.data))); -}; - -function Signer(key, hashAlgo) { - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Signer, stream.Writable); - -Signer.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Signer.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = Buffer.from(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Signer.prototype.sign = function () { - var sig = nacl.sign.detached( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(Buffer.concat([ - this.key.part.k.data, this.key.part.A.data]))); - var sigBuf = Buffer.from(sig); - var sigObj = Signature.parse(sigBuf, 'ed25519', 'raw'); - sigObj.hashAlgorithm = 'sha512'; - return (sigObj); -}; - - -/***/ }), -/* 364 */ -/***/ (function(module) { - -"use strict"; - -module.exports = (flag, argv) => { - argv = argv || process.argv; - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const pos = argv.indexOf(prefix + flag); - const terminatorPos = argv.indexOf('--'); - return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); -}; - - -/***/ }), -/* 365 */, -/* 366 */, -/* 367 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -var parser = __webpack_require__(852); -var signer = __webpack_require__(64); -var verify = __webpack_require__(927); -var utils = __webpack_require__(909); - - - -///--- API - -module.exports = { - - parse: parser.parseRequest, - parseRequest: parser.parseRequest, - - sign: signer.signRequest, - signRequest: signer.signRequest, - createSigner: signer.createSigner, - isSigner: signer.isSigner, - - sshKeyToPEM: utils.sshKeyToPEM, - sshKeyFingerprint: utils.fingerprint, - pemToRsaSSHKey: utils.pemToRsaSSHKey, - - verify: verify.verifySignature, - verifySignature: verify.verifySignature, - verifyHMAC: verify.verifyHMAC -}; - - -/***/ }), -/* 368 */, -/* 369 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_dependencies(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $schemaDeps = {}, - $propertyDeps = {}, - $ownProperties = it.opts.ownProperties; - for ($property in $schema) { - if ($property == '__proto__') continue; - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - if ($deps.length) { - out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - if ($breakOnError) { - out += ' && ( '; - var arr1 = $deps; - if (arr1) { - var $propertyKey, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $propertyKey = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - out += ' ) { '; - var arr2 = $deps; - if (arr2) { - var $propertyKey, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $propertyKey = arr2[i2 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - } - it.errorPath = $currentErrorPath; - var $currentBaseId = $it.baseId; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - out += ') { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), -/* 370 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlSubDomainSegment = /(?:[a-z0-9](?:[a-z0-9_\-]*[a-z0-9])?)/i; -var _default = validateUrlSubDomainSegment; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 371 */, -/* 372 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(289)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(103)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 373 */, -/* 374 */ -/***/ (function(module) { - -"use strict"; - - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var defineProperty = Object.defineProperty; -var gOPD = Object.getOwnPropertyDescriptor; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target -var setProperty = function setProperty(target, options) { - if (defineProperty && options.name === '__proto__') { - defineProperty(target, options.name, { - enumerable: true, - configurable: true, - value: options.newValue, - writable: true - }); - } else { - target[options.name] = options.newValue; - } -}; - -// Return undefined instead of __proto__ if '__proto__' is not an own property -var getProperty = function getProperty(obj, name) { - if (name === '__proto__') { - if (!hasOwn.call(obj, name)) { - return void 0; - } else if (gOPD) { - // In early versions of node, obj['__proto__'] is buggy when obj has - // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. - return gOPD(obj, name).value; - } - } - - return obj[name]; -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = getProperty(target, name); - copy = getProperty(options, name); - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - setProperty(target, { name: name, newValue: copy }); - } - } - } - } - } - - // Return the modified object - return target; -}; - - -/***/ }), -/* 375 */, -/* 376 */, -/* 377 */, -/* 378 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = Identity; - -var assert = __webpack_require__(489); -var algs = __webpack_require__(603); -var crypto = __webpack_require__(417); -var Fingerprint = __webpack_require__(400); -var Signature = __webpack_require__(575); -var errs = __webpack_require__(570); -var util = __webpack_require__(669); -var utils = __webpack_require__(270); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; - -/*JSSTYLED*/ -var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i; - -var oids = {}; -oids.cn = '2.5.4.3'; -oids.o = '2.5.4.10'; -oids.ou = '2.5.4.11'; -oids.l = '2.5.4.7'; -oids.s = '2.5.4.8'; -oids.c = '2.5.4.6'; -oids.sn = '2.5.4.4'; -oids.postalCode = '2.5.4.17'; -oids.serialNumber = '2.5.4.5'; -oids.street = '2.5.4.9'; -oids.x500UniqueIdentifier = '2.5.4.45'; -oids.role = '2.5.4.72'; -oids.telephoneNumber = '2.5.4.20'; -oids.description = '2.5.4.13'; -oids.dc = '0.9.2342.19200300.100.1.25'; -oids.uid = '0.9.2342.19200300.100.1.1'; -oids.mail = '0.9.2342.19200300.100.1.3'; -oids.title = '2.5.4.12'; -oids.gn = '2.5.4.42'; -oids.initials = '2.5.4.43'; -oids.pseudonym = '2.5.4.65'; -oids.emailAddress = '1.2.840.113549.1.9.1'; - -var unoids = {}; -Object.keys(oids).forEach(function (k) { - unoids[oids[k]] = k; -}); - -function Identity(opts) { - var self = this; - assert.object(opts, 'options'); - assert.arrayOfObject(opts.components, 'options.components'); - this.components = opts.components; - this.componentLookup = {}; - this.components.forEach(function (c) { - if (c.name && !c.oid) - c.oid = oids[c.name]; - if (c.oid && !c.name) - c.name = unoids[c.oid]; - if (self.componentLookup[c.name] === undefined) - self.componentLookup[c.name] = []; - self.componentLookup[c.name].push(c); - }); - if (this.componentLookup.cn && this.componentLookup.cn.length > 0) { - this.cn = this.componentLookup.cn[0].value; - } - assert.optionalString(opts.type, 'options.type'); - if (opts.type === undefined) { - if (this.components.length === 1 && - this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.dc && - this.components.length === this.componentLookup.dc.length) { - this.type = 'host'; - this.hostname = this.componentLookup.dc.map( - function (c) { - return (c.value); - }).join('.'); - - } else if (this.componentLookup.uid && - this.components.length === - this.componentLookup.uid.length) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1 && - this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { - this.type = 'host'; - this.hostname = this.componentLookup.cn[0].value; - - } else if (this.componentLookup.uid && - this.componentLookup.uid.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.uid[0].value; - - } else if (this.componentLookup.mail && - this.componentLookup.mail.length === 1) { - this.type = 'email'; - this.email = this.componentLookup.mail[0].value; - - } else if (this.componentLookup.cn && - this.componentLookup.cn.length === 1) { - this.type = 'user'; - this.uid = this.componentLookup.cn[0].value; - - } else { - this.type = 'unknown'; - } - } else { - this.type = opts.type; - if (this.type === 'host') - this.hostname = opts.hostname; - else if (this.type === 'user') - this.uid = opts.uid; - else if (this.type === 'email') - this.email = opts.email; - else - throw (new Error('Unknown type ' + this.type)); - } -} - -Identity.prototype.toString = function () { - return (this.components.map(function (c) { - var n = c.name.toUpperCase(); - /*JSSTYLED*/ - n = n.replace(/=/g, '\\='); - var v = c.value; - /*JSSTYLED*/ - v = v.replace(/,/g, '\\,'); - return (n + '=' + v); - }).join(', ')); -}; - -Identity.prototype.get = function (name, asArray) { - assert.string(name, 'name'); - var arr = this.componentLookup[name]; - if (arr === undefined || arr.length === 0) - return (undefined); - if (!asArray && arr.length > 1) - throw (new Error('Multiple values for attribute ' + name)); - if (!asArray) - return (arr[0].value); - return (arr.map(function (c) { - return (c.value); - })); -}; - -Identity.prototype.toArray = function (idx) { - return (this.components.map(function (c) { - return ({ - name: c.name, - value: c.value - }); - })); -}; - -/* - * These are from X.680 -- PrintableString allowed chars are in section 37.4 - * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to - * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006 - * (the basic ASCII character set). - */ -/* JSSTYLED */ -var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/; -/* JSSTYLED */ -var NOT_IA5 = /[^\x00-\x7f]/; - -Identity.prototype.toAsn1 = function (der, tag) { - der.startSequence(tag); - this.components.forEach(function (c) { - der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set); - der.startSequence(); - der.writeOID(c.oid); - /* - * If we fit in a PrintableString, use that. Otherwise use an - * IA5String or UTF8String. - * - * If this identity was parsed from a DN, use the ASN.1 types - * from the original representation (otherwise this might not - * be a full match for the original in some validators). - */ - if (c.asn1type === asn1.Ber.Utf8String || - c.value.match(NOT_IA5)) { - var v = Buffer.from(c.value, 'utf8'); - der.writeBuffer(v, asn1.Ber.Utf8String); - - } else if (c.asn1type === asn1.Ber.IA5String || - c.value.match(NOT_PRINTABLE)) { - der.writeString(c.value, asn1.Ber.IA5String); - - } else { - var type = asn1.Ber.PrintableString; - if (c.asn1type !== undefined) - type = c.asn1type; - der.writeString(c.value, type); - } - der.endSequence(); - der.endSequence(); - }); - der.endSequence(); -}; - -function globMatch(a, b) { - if (a === '**' || b === '**') - return (true); - var aParts = a.split('.'); - var bParts = b.split('.'); - if (aParts.length !== bParts.length) - return (false); - for (var i = 0; i < aParts.length; ++i) { - if (aParts[i] === '*' || bParts[i] === '*') - continue; - if (aParts[i] !== bParts[i]) - return (false); - } - return (true); -} - -Identity.prototype.equals = function (other) { - if (!Identity.isIdentity(other, [1, 0])) - return (false); - if (other.components.length !== this.components.length) - return (false); - for (var i = 0; i < this.components.length; ++i) { - if (this.components[i].oid !== other.components[i].oid) - return (false); - if (!globMatch(this.components[i].value, - other.components[i].value)) { - return (false); - } - } - return (true); -}; - -Identity.forHost = function (hostname) { - assert.string(hostname, 'hostname'); - return (new Identity({ - type: 'host', - hostname: hostname, - components: [ { name: 'cn', value: hostname } ] - })); -}; - -Identity.forUser = function (uid) { - assert.string(uid, 'uid'); - return (new Identity({ - type: 'user', - uid: uid, - components: [ { name: 'uid', value: uid } ] - })); -}; - -Identity.forEmail = function (email) { - assert.string(email, 'email'); - return (new Identity({ - type: 'email', - email: email, - components: [ { name: 'mail', value: email } ] - })); -}; - -Identity.parseDN = function (dn) { - assert.string(dn, 'dn'); - var parts = ['']; - var idx = 0; - var rem = dn; - while (rem.length > 0) { - var m; - /*JSSTYLED*/ - if ((m = /^,/.exec(rem)) !== null) { - parts[++idx] = ''; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^\\,/.exec(rem)) !== null) { - parts[idx] += ','; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^\\./.exec(rem)) !== null) { - parts[idx] += m[0]; - rem = rem.slice(m[0].length); - /*JSSTYLED*/ - } else if ((m = /^[^\\,]+/.exec(rem)) !== null) { - parts[idx] += m[0]; - rem = rem.slice(m[0].length); - } else { - throw (new Error('Failed to parse DN')); - } - } - var cmps = parts.map(function (c) { - c = c.trim(); - var eqPos = c.indexOf('='); - while (eqPos > 0 && c.charAt(eqPos - 1) === '\\') - eqPos = c.indexOf('=', eqPos + 1); - if (eqPos === -1) { - throw (new Error('Failed to parse DN')); - } - /*JSSTYLED*/ - var name = c.slice(0, eqPos).toLowerCase().replace(/\\=/g, '='); - var value = c.slice(eqPos + 1); - return ({ name: name, value: value }); - }); - return (new Identity({ components: cmps })); -}; - -Identity.fromArray = function (components) { - assert.arrayOfObject(components, 'components'); - components.forEach(function (cmp) { - assert.object(cmp, 'component'); - assert.string(cmp.name, 'component.name'); - if (!Buffer.isBuffer(cmp.value) && - !(typeof (cmp.value) === 'string')) { - throw (new Error('Invalid component value')); - } - }); - return (new Identity({ components: components })); -}; - -Identity.parseAsn1 = function (der, top) { - var components = []; - der.readSequence(top); - var end = der.offset + der.length; - while (der.offset < end) { - der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set); - var after = der.offset + der.length; - der.readSequence(); - var oid = der.readOID(); - var type = der.peek(); - var value; - switch (type) { - case asn1.Ber.PrintableString: - case asn1.Ber.IA5String: - case asn1.Ber.OctetString: - case asn1.Ber.T61String: - value = der.readString(type); - break; - case asn1.Ber.Utf8String: - value = der.readString(type, true); - value = value.toString('utf8'); - break; - case asn1.Ber.CharacterString: - case asn1.Ber.BMPString: - value = der.readString(type, true); - value = value.toString('utf16le'); - break; - default: - throw (new Error('Unknown asn1 type ' + type)); - } - components.push({ oid: oid, asn1type: type, value: value }); - der._offset = after; - } - der._offset = end; - return (new Identity({ - components: components - })); -}; - -Identity.isIdentity = function (obj, ver) { - return (utils.isCompatible(obj, Identity, ver)); -}; - -/* - * API versions for Identity: - * [1,0] -- initial ver - */ -Identity.prototype._sshpkApiVersion = [1, 0]; - -Identity._oldVersionDetect = function (obj) { - return ([1, 0]); -}; - - -/***/ }), -/* 379 */, -/* 380 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(809); - -__webpack_require__(968); - -var _validCashtag = _interopRequireDefault(__webpack_require__(661)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text || text.indexOf('$') === -1) { - return []; - } - - var tags = []; - text.replace(_validCashtag["default"], function (match, before, dollar, cashtag, offset, chunk) { - var startPosition = offset + before.length; - var endPosition = startPosition + cashtag.length + 1; - tags.push({ - cashtag: cashtag, - indices: [startPosition, endPosition] - }); - }); - return tags; -} - -module.exports = exports.default; - -/***/ }), -/* 381 */, -/* 382 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeSubDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9_\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; -var _default = validateUrlUnicodeSubDomainSegment; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 383 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -var pubsuffix = __webpack_require__(519); - -// Gives the permutation of all possible domainMatch()es of a given domain. The -// array is in shortest-to-longest order. Handy for indexing. -function permuteDomain (domain) { - var pubSuf = pubsuffix.getPublicSuffix(domain); - if (!pubSuf) { - return null; - } - if (pubSuf == domain) { - return [domain]; - } - - var prefix = domain.slice(0, -(pubSuf.length + 1)); // ".example.com" - var parts = prefix.split('.').reverse(); - var cur = pubSuf; - var permutations = [cur]; - while (parts.length) { - cur = parts.shift() + '.' + cur; - permutations.push(cur); - } - return permutations; -} - -exports.permuteDomain = permuteDomain; - - -/***/ }), -/* 384 */, -/* 385 */ -/***/ (function(module) { - -module.exports = {"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}; - -/***/ }), -/* 386 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var stringify = __webpack_require__(66); -var parse = __webpack_require__(398); -var formats = __webpack_require__(13); - -module.exports = { - formats: formats, - parse: parse, - stringify: stringify -}; - - -/***/ }), -/* 387 */, -/* 388 */, -/* 389 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -__webpack_require__(809); - -__webpack_require__(549); - -var _endHashtagMatch = _interopRequireDefault(__webpack_require__(69)); - -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - -var _hashSigns = _interopRequireDefault(__webpack_require__(617)); - -var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); - -var _validHashtag = _interopRequireDefault(__webpack_require__(616)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var extractHashtagsWithIndices = function extractHashtagsWithIndices(text, options) { - if (!options) { - options = { - checkUrlOverlap: true - }; - } - - if (!text || !text.match(_hashSigns["default"])) { - return []; - } - - var tags = []; - text.replace(_validHashtag["default"], function (match, before, hash, hashText, offset, chunk) { - var after = chunk.slice(offset + match.length); - - if (after.match(_endHashtagMatch["default"])) { - return; - } - - var startPosition = offset + before.length; - var endPosition = startPosition + hashText.length + 1; - tags.push({ - hashtag: hashText, - indices: [startPosition, endPosition] - }); - }); - - if (options.checkUrlOverlap) { - // also extract URL entities - var urls = (0, _extractUrlsWithIndices["default"])(text); - - if (urls.length > 0) { - var entities = tags.concat(urls); // remove overlap - - (0, _removeOverlappingEntities["default"])(entities); // only push back hashtags - - tags = []; - - for (var i = 0; i < entities.length; i++) { - if (entities[i].hashtag) { - tags.push(entities[i]); - } - } - } - } - - return tags; -}; - -var _default = extractHashtagsWithIndices; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 390 */, -/* 391 */, -/* 392 */, -/* 393 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var $defineProperty = __webpack_require__(973); -var createDesc = __webpack_require__(690); - -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value)); - else object[index] = value; -}; - - -/***/ }), -/* 394 */, -/* 395 */, -/* 396 */, -/* 397 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_multipleOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 398 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(581); - -var has = Object.prototype.hasOwnProperty; - -var defaults = { - allowDots: false, - allowPrototypes: false, - arrayLimit: 20, - decoder: utils.decode, - delimiter: '&', - depth: 5, - parameterLimit: 1000, - plainObjects: false, - strictNullHandling: false -}; - -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - - for (var i = 0; i < parts.length; ++i) { - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder); - val = options.decoder(part.slice(pos + 1), defaults.decoder); - } - if (has.call(obj, key)) { - obj[key] = [].concat(obj[key]).concat(val); - } else { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options) { - var leaf = val; - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]') { - obj = []; - obj = obj.concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options); -}; - -module.exports = function (str, opts) { - var options = opts ? utils.assign({}, opts) : {}; - - if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; - options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; - options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options); - obj = utils.merge(obj, newObj, options); - } - - return utils.compact(obj); -}; - - -/***/ }), -/* 399 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPath = (0, _regexSupplant["default"])(/(\/#{validateUrlPchar}*)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlPath; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 400 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = Fingerprint; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var crypto = __webpack_require__(417); -var errs = __webpack_require__(570); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var Certificate = __webpack_require__(202); -var utils = __webpack_require__(270); - -var FingerprintFormatError = errs.FingerprintFormatError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Fingerprint(opts) { - assert.object(opts, 'options'); - assert.string(opts.type, 'options.type'); - assert.buffer(opts.hash, 'options.hash'); - assert.string(opts.algorithm, 'options.algorithm'); - - this.algorithm = opts.algorithm.toLowerCase(); - if (algs.hashAlgs[this.algorithm] !== true) - throw (new InvalidAlgorithmError(this.algorithm)); - - this.hash = opts.hash; - this.type = opts.type; - this.hashType = opts.hashType; -} - -Fingerprint.prototype.toString = function (format) { - if (format === undefined) { - if (this.algorithm === 'md5' || this.hashType === 'spki') - format = 'hex'; - else - format = 'base64'; - } - assert.string(format); - - switch (format) { - case 'hex': - if (this.hashType === 'spki') - return (this.hash.toString('hex')); - return (addColons(this.hash.toString('hex'))); - case 'base64': - if (this.hashType === 'spki') - return (this.hash.toString('base64')); - return (sshBase64Format(this.algorithm, - this.hash.toString('base64'))); - default: - throw (new FingerprintFormatError(undefined, format)); - } -}; - -Fingerprint.prototype.matches = function (other) { - assert.object(other, 'key or certificate'); - if (this.type === 'key' && this.hashType !== 'ssh') { - utils.assertCompatible(other, Key, [1, 7], 'key with spki'); - if (PrivateKey.isPrivateKey(other)) { - utils.assertCompatible(other, PrivateKey, [1, 6], - 'privatekey with spki support'); - } - } else if (this.type === 'key') { - utils.assertCompatible(other, Key, [1, 0], 'key'); - } else { - utils.assertCompatible(other, Certificate, [1, 0], - 'certificate'); - } - - var theirHash = other.hash(this.algorithm, this.hashType); - var theirHash2 = crypto.createHash(this.algorithm). - update(theirHash).digest('base64'); - - if (this.hash2 === undefined) - this.hash2 = crypto.createHash(this.algorithm). - update(this.hash).digest('base64'); - - return (this.hash2 === theirHash2); -}; - -/*JSSTYLED*/ -var base64RE = /^[A-Za-z0-9+\/=]+$/; -/*JSSTYLED*/ -var hexRE = /^[a-fA-F0-9]+$/; - -Fingerprint.parse = function (fp, options) { - assert.string(fp, 'fingerprint'); - - var alg, hash, enAlgs; - if (Array.isArray(options)) { - enAlgs = options; - options = {}; - } - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - if (options.enAlgs !== undefined) - enAlgs = options.enAlgs; - if (options.algorithms !== undefined) - enAlgs = options.algorithms; - assert.optionalArrayOfString(enAlgs, 'algorithms'); - - var hashType = 'ssh'; - if (options.hashType !== undefined) - hashType = options.hashType; - assert.string(hashType, 'options.hashType'); - - var parts = fp.split(':'); - if (parts.length == 2) { - alg = parts[0].toLowerCase(); - if (!base64RE.test(parts[1])) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts[1], 'base64'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else if (parts.length > 2) { - alg = 'md5'; - if (parts[0].toLowerCase() === 'md5') - parts = parts.slice(1); - parts = parts.map(function (p) { - while (p.length < 2) - p = '0' + p; - if (p.length > 2) - throw (new FingerprintFormatError(fp)); - return (p); - }); - parts = parts.join(''); - if (!hexRE.test(parts) || parts.length % 2 !== 0) - throw (new FingerprintFormatError(fp)); - try { - hash = Buffer.from(parts, 'hex'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else { - if (hexRE.test(fp)) { - hash = Buffer.from(fp, 'hex'); - } else if (base64RE.test(fp)) { - hash = Buffer.from(fp, 'base64'); - } else { - throw (new FingerprintFormatError(fp)); - } - - switch (hash.length) { - case 32: - alg = 'sha256'; - break; - case 16: - alg = 'md5'; - break; - case 20: - alg = 'sha1'; - break; - case 64: - alg = 'sha512'; - break; - default: - throw (new FingerprintFormatError(fp)); - } - - /* Plain hex/base64: guess it's probably SPKI unless told. */ - if (options.hashType === undefined) - hashType = 'spki'; - } - - if (alg === undefined) - throw (new FingerprintFormatError(fp)); - - if (algs.hashAlgs[alg] === undefined) - throw (new InvalidAlgorithmError(alg)); - - if (enAlgs !== undefined) { - enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); - if (enAlgs.indexOf(alg) === -1) - throw (new InvalidAlgorithmError(alg)); - } - - return (new Fingerprint({ - algorithm: alg, - hash: hash, - type: options.type || 'key', - hashType: hashType - })); -}; - -function addColons(s) { - /*JSSTYLED*/ - return (s.replace(/(.{2})(?=.)/g, '$1:')); -} - -function base64Strip(s) { - /*JSSTYLED*/ - return (s.replace(/=*$/, '')); -} - -function sshBase64Format(alg, h) { - return (alg.toUpperCase() + ':' + base64Strip(h)); -} - -Fingerprint.isFingerprint = function (obj, ver) { - return (utils.isCompatible(obj, Fingerprint, ver)); -}; - -/* - * API versions for Fingerprint: - * [1,0] -- initial ver - * [1,1] -- first tagged ver - * [1,2] -- hashType and spki support - */ -Fingerprint.prototype._sshpkApiVersion = [1, 2]; - -Fingerprint._oldVersionDetect = function (obj) { - assert.func(obj.toString); - assert.func(obj.matches); - return ([1, 0]); -}; - - -/***/ }), -/* 401 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var latinAccentChars = /\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0100-\u024F\u0253\u0254\u0256\u0257\u0259\u025B\u0263\u0268\u026F\u0272\u0289\u028B\u02BB\u0300-\u036F\u1E00-\u1EFF/; -var _default = latinAccentChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 402 */, -/* 403 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = __webpack_require__(881)('native-function-to-string', Function.toString); - - -/***/ }), -/* 404 */, -/* 405 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validMentionPrecedingChars = /(?:^|[^a-zA-Z0-9_!#$%&*@@]|(?:^|[^a-zA-Z0-9_+~.-])(?:rt|RT|rT|Rt):?)/; -var _default = validMentionPrecedingChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 406 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(493); - -__webpack_require__(421); - -__webpack_require__(779); - -__webpack_require__(450); - -__webpack_require__(332); - -__webpack_require__(966); - -__webpack_require__(124); - -__webpack_require__(157); - -__webpack_require__(684); - -__webpack_require__(954); - -var _defineProperty2 = _interopRequireDefault(__webpack_require__(783)); - -var _configs = _interopRequireDefault(__webpack_require__(125)); - -var _getTweetLength = _interopRequireDefault(__webpack_require__(467)); - -var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _default(text) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - - if (!text) { - return 'empty'; - } - - var mergedOptions = _objectSpread({}, _configs["default"].defaults, {}, options); - - var maxLength = mergedOptions.maxWeightedTweetLength; // Determine max length independent of URL length - - if ((0, _getTweetLength["default"])(text, mergedOptions) > maxLength) { - return 'too_long'; - } - - if ((0, _hasInvalidCharacters["default"])(text)) { - return 'invalid_characters'; - } - - return false; -} - -module.exports = exports.default; - -/***/ }), -/* 407 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; -// Standard YAML's JSON schema. -// http://www.yaml.org/spec/1.2/spec.html#id2803231 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, this schema is not such strict as defined in the YAML specification. -// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - - - - - -module.exports = __webpack_require__(308).extend({ - implicit: [ - __webpack_require__(72), - __webpack_require__(882), - __webpack_require__(707), - __webpack_require__(227) - ] -}); - - -/***/ }), -/* 408 */, -/* 409 */, -/* 410 */, -/* 411 */ -/***/ (function(module) { - -module.exports = {"$id":"content.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["size","mimeType"],"properties":{"size":{"type":"integer"},"compression":{"type":"integer"},"mimeType":{"type":"string"},"text":{"type":"string"},"encoding":{"type":"string"},"comment":{"type":"string"}}}; - -/***/ }), -/* 412 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/; -var _default = punct; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 413 */ -/***/ (function(module) { - -module.exports = require("stream"); - -/***/ }), -/* 414 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -var authToken = __webpack_require__(813); - -const createActionAuth = function createActionAuth() { - if (!process.env.GITHUB_ACTION) { - throw new Error("[@octokit/auth-action] `GITHUB_ACTION` environment variable is not set. @octokit/auth-action is meant to be used in GitHub Actions only."); - } - - const definitions = [process.env.GITHUB_TOKEN, process.env.INPUT_GITHUB_TOKEN, process.env.INPUT_TOKEN].filter(Boolean); - - if (definitions.length === 0) { - throw new Error("[@octokit/auth-action] `GITHUB_TOKEN` variable is not set. It must be set on either `env:` or `with:`. See https://github.com/octokit/auth-action.js#createactionauth"); - } - - if (definitions.length > 1) { - throw new Error("[@octokit/auth-action] The token variable is specified more than once. Use either `with.token`, `with.GITHUB_TOKEN`, or `env.GITHUB_TOKEN`. See https://github.com/octokit/auth-action.js#createactionauth"); - } - - const token = definitions.pop(); - return authToken.createTokenAuth(token); -}; - -exports.createActionAuth = createActionAuth; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 415 */, -/* 416 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var fs = __webpack_require__(747) -var qs = __webpack_require__(191) -var validate = __webpack_require__(846) -var extend = __webpack_require__(374) - -function Har (request) { - this.request = request -} - -Har.prototype.reducer = function (obj, pair) { - // new property ? - if (obj[pair.name] === undefined) { - obj[pair.name] = pair.value - return obj - } - - // existing? convert to array - var arr = [ - obj[pair.name], - pair.value - ] - - obj[pair.name] = arr - - return obj -} - -Har.prototype.prep = function (data) { - // construct utility properties - data.queryObj = {} - data.headersObj = {} - data.postData.jsonObj = false - data.postData.paramsObj = false - - // construct query objects - if (data.queryString && data.queryString.length) { - data.queryObj = data.queryString.reduce(this.reducer, {}) - } - - // construct headers objects - if (data.headers && data.headers.length) { - // loweCase header keys - data.headersObj = data.headers.reduceRight(function (headers, header) { - headers[header.name] = header.value - return headers - }, {}) - } - - // construct Cookie header - if (data.cookies && data.cookies.length) { - var cookies = data.cookies.map(function (cookie) { - return cookie.name + '=' + cookie.value - }) - - if (cookies.length) { - data.headersObj.cookie = cookies.join('; ') - } - } - - // prep body - function some (arr) { - return arr.some(function (type) { - return data.postData.mimeType.indexOf(type) === 0 - }) - } - - if (some([ - 'multipart/mixed', - 'multipart/related', - 'multipart/form-data', - 'multipart/alternative'])) { - // reset values - data.postData.mimeType = 'multipart/form-data' - } else if (some([ - 'application/x-www-form-urlencoded'])) { - if (!data.postData.params) { - data.postData.text = '' - } else { - data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) - - // always overwrite - data.postData.text = qs.stringify(data.postData.paramsObj) - } - } else if (some([ - 'text/json', - 'text/x-json', - 'application/json', - 'application/x-json'])) { - data.postData.mimeType = 'application/json' - - if (data.postData.text) { - try { - data.postData.jsonObj = JSON.parse(data.postData.text) - } catch (e) { - this.request.debug(e) - - // force back to text/plain - data.postData.mimeType = 'text/plain' - } - } - } - - return data -} - -Har.prototype.options = function (options) { - // skip if no har property defined - if (!options.har) { - return options - } - - var har = {} - extend(har, options.har) - - // only process the first entry - if (har.log && har.log.entries) { - har = har.log.entries[0] - } - - // add optional properties to make validation successful - har.url = har.url || options.url || options.uri || options.baseUrl || '/' - har.httpVersion = har.httpVersion || 'HTTP/1.1' - har.queryString = har.queryString || [] - har.headers = har.headers || [] - har.cookies = har.cookies || [] - har.postData = har.postData || {} - har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' - - har.bodySize = 0 - har.headersSize = 0 - har.postData.size = 0 - - if (!validate.request(har)) { - return options - } - - // clean up and get some utility properties - var req = this.prep(har) - - // construct new options - if (req.url) { - options.url = req.url - } - - if (req.method) { - options.method = req.method - } - - if (Object.keys(req.queryObj).length) { - options.qs = req.queryObj - } - - if (Object.keys(req.headersObj).length) { - options.headers = req.headersObj - } - - function test (type) { - return req.postData.mimeType.indexOf(type) === 0 - } - if (test('application/x-www-form-urlencoded')) { - options.form = req.postData.paramsObj - } else if (test('application/json')) { - if (req.postData.jsonObj) { - options.body = req.postData.jsonObj - options.json = true - } - } else if (test('multipart/form-data')) { - options.formData = {} - - req.postData.params.forEach(function (param) { - var attachment = {} - - if (!param.fileName && !param.fileName && !param.contentType) { - options.formData[param.name] = param.value - return - } - - // attempt to read from disk! - if (param.fileName && !param.value) { - attachment.value = fs.createReadStream(param.fileName) - } else if (param.value) { - attachment.value = param.value - } - - if (param.fileName) { - attachment.options = { - filename: param.fileName, - contentType: param.contentType ? param.contentType : null - } - } - - options.formData[param.name] = attachment - }) - } else { - if (req.postData.text) { - options.body = req.postData.text - } - } - - return options -} - -exports.Har = Har - - -/***/ }), -/* 417 */ -/***/ (function(module) { - -module.exports = require("crypto"); - -/***/ }), -/* 418 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var BOOLEAN_ATTRIBUTES = { - disabled: true, - readonly: true, - multiple: true, - checked: true -}; // Options which should not be passed as HTML attributes - -var OPTIONS_NOT_ATTRIBUTES = { - urlClass: true, - listClass: true, - usernameClass: true, - hashtagClass: true, - cashtagClass: true, - usernameUrlBase: true, - listUrlBase: true, - hashtagUrlBase: true, - cashtagUrlBase: true, - usernameUrlBlock: true, - listUrlBlock: true, - hashtagUrlBlock: true, - linkUrlBlock: true, - usernameIncludeSymbol: true, - suppressLists: true, - suppressNoFollow: true, - targetBlank: true, - suppressDataScreenName: true, - urlEntities: true, - symbolTag: true, - textWithSymbolTag: true, - urlTarget: true, - invisibleTagAttrs: true, - linkAttributeBlock: true, - linkTextBlock: true, - htmlEscapeNonEntities: true -}; - -function _default(options) { - var htmlAttrs = {}; - - for (var k in options) { - var v = options[k]; - - if (OPTIONS_NOT_ATTRIBUTES[k]) { - continue; - } - - if (BOOLEAN_ATTRIBUTES[k]) { - v = v ? k : null; - } - - if (v == null) { - continue; - } - - htmlAttrs[k] = v; - } - - return htmlAttrs; -} - -module.exports = exports.default; - -/***/ }), -/* 419 */, -/* 420 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(189); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 421 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -var $export = __webpack_require__(195); -// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) -$export($export.S + $export.F * !__webpack_require__(843), 'Object', { defineProperties: __webpack_require__(20) }); - - -/***/ }), -/* 422 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var global = __webpack_require__(300); -var dP = __webpack_require__(973); -var DESCRIPTORS = __webpack_require__(843); -var SPECIES = __webpack_require__(621)('species'); - -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function () { return this; } - }); -}; - - -/***/ }), -/* 423 */ -/***/ (function(module) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 424 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var iterate = __webpack_require__(97) - , initState = __webpack_require__(147) - , terminator = __webpack_require__(106) - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} - - -/***/ }), -/* 425 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -/* eslint-disable @typescript-eslint/no-explicit-any */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; -const http = __importStar(__webpack_require__(605)); -const https = __importStar(__webpack_require__(211)); -const pm = __importStar(__webpack_require__(177)); -const tunnel = __importStar(__webpack_require__(988)); -var HttpCodes; -(function (HttpCodes) { - HttpCodes[HttpCodes["OK"] = 200] = "OK"; - HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; - HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; - HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; - HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; - HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; - HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; - HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; - HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; - HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; - HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); -var Headers; -(function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); -var MediaTypes; -(function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); -/** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ -function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; -} -exports.getProxyUrl = getProxyUrl; -const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; -const ExponentialBackoffCeiling = 10; -const ExponentialBackoffTimeSlice = 5; -class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } -} -exports.HttpClientError = HttpClientError; -class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on('data', (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - })); - }); - } -} -exports.HttpClientResponse = HttpClientResponse; -function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; -} -exports.isHttps = isHttps; -class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - }); - } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - }); - } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); - } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - }); - } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - }); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - // Check if it's an authentication challenge - if (response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } - else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol === 'https:' && - parsedUrl.protocol !== parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade) { - throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - yield response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - // header names are case insensitive - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if (!response.message.statusCode || - !HttpResponseRetryCodes.includes(response.message.statusCode)) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } - else if (!res) { - // If `err` is not passed, then `res` must be passed. - reject(new Error('Unknown error')); - } - else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(undefined, res); - }); - let socket; - req.on('socket', sock => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - // err has statusCode property - // res should have headers - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } - else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port - ? parseInt(info.parsedUrl.port) - : defaultPort; - info.options.path = - (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - })), { host: proxyUrl.hostname, port: proxyUrl.port }) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } - else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - // not found leads to null obj returned - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - // get the result from the body - function dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } - else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } - catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } - else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } - else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } - else { - resolve(response); - } - })); - }); - } -} -exports.HttpClient = HttpClient; -const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); -//# sourceMappingURL=index.js.map - -/***/ }), -/* 426 */, -/* 427 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var META = __webpack_require__(750)('meta'); -var isObject = __webpack_require__(956); -var has = __webpack_require__(975); -var setDesc = __webpack_require__(973).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(971)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 428 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const debug_1 = __importDefault(__webpack_require__(784)); -const debug = debug_1.default('https-proxy-agent:parse-proxy-response'); -function parseProxyResponse(socket) { - return new Promise((resolve, reject) => { - // we need to buffer any HTTP traffic that happens with the proxy before we get - // the CONNECT response, so that if the response is anything other than an "200" - // response code, then we can re-play the "data" events on the socket once the - // HTTP parser is hooked up... - let buffersLength = 0; - const buffers = []; - function read() { - const b = socket.read(); - if (b) - ondata(b); - else - socket.once('readable', read); - } - function cleanup() { - socket.removeListener('end', onend); - socket.removeListener('error', onerror); - socket.removeListener('close', onclose); - socket.removeListener('readable', read); - } - function onclose(err) { - debug('onclose had error %o', err); - } - function onend() { - debug('onend'); - } - function onerror(err) { - cleanup(); - debug('onerror %o', err); - reject(err); - } - function ondata(b) { - buffers.push(b); - buffersLength += b.length; - const buffered = Buffer.concat(buffers, buffersLength); - const endOfHeaders = buffered.indexOf('\r\n\r\n'); - if (endOfHeaders === -1) { - // keep buffering - debug('have not received end of HTTP headers yet...'); - read(); - return; - } - const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\r\n')); - const statusCode = +firstLine.split(' ')[1]; - debug('got proxy server response: %o', firstLine); - resolve({ - statusCode, - buffered - }); - } - socket.on('error', onerror); - socket.on('close', onclose); - socket.on('end', onend); - read(); - }); -} -exports.default = parseProxyResponse; -//# sourceMappingURL=parse-proxy-response.js.map - -/***/ }), -/* 429 */, -/* 430 */, -/* 431 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.issue = exports.issueCommand = void 0; -const os = __importStar(__webpack_require__(87)); -const utils_1 = __webpack_require__(82); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); -} -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } -} -function escapeData(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); -} -function escapeProperty(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); -} -//# sourceMappingURL=command.js.map - -/***/ }), -/* 432 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = getNewTweets; - -const parseDiff = __webpack_require__(557); - -async function getNewTweets({ octokit, toolkit, payload }) { - // Avoid loading huuuge diffs for pull requests that don’t create a new tweet file - const response = await octokit.request( - "GET /repos/:owner/:repo/pulls/:number/files", - { - owner: payload.repository.owner.login, - repo: payload.repository.name, - number: payload.pull_request.number, - } - ); - - const { data: files } = response; - - const newTweet = files.find( - (file) => - file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) - ); - - if (!newTweet) { - toolkit.info("Pull request does not include new tweets"); - process.exit(0); - } - - toolkit.info(`${files.length} files changed`); - - // We load the pull request diff in order to access the contents of the new tweets from - // pull requests coming from forks. The action does not have access to that git tree, - // neither does the action’s token have access to the fork repository - const { data } = await octokit.request( - "GET /repos/:owner/:repo/pulls/:number", - { - headers: { - accept: "application/vnd.github.diff", - }, - owner: payload.repository.owner.login, - repo: payload.repository.name, - number: payload.pull_request.number, - } - ); - - const newTweets = parseDiff(data) - .filter((file) => file.new && /^tweets\/.*\.tweet$/.test(file.to)) - .map((file) => - file.chunks[0].changes.map((line) => line.content.substr(1)).join("\n") - ); - - toolkit.info(`New tweets found: ${newTweets.length}`); - return newTweets; -} - - -/***/ }), -/* 433 */, -/* 434 */, -/* 435 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - readPkcs8: readPkcs8, - write: write, - writePkcs8: writePkcs8, - pkcs8ToBuffer: pkcs8ToBuffer, - - readECDSACurve: readECDSACurve, - writeECDSACurve: writeECDSACurve -}; - -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var pem = __webpack_require__(268); - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs8')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs8')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs8(alg, type, der) { - /* Private keys in pkcs#8 format have a weird extra int */ - if (der.peek() === asn1.Ber.Integer) { - assert.strictEqual(type, 'private', - 'unexpected Integer at start of public key'); - der.readString(asn1.Ber.Integer, true); - } - - der.readSequence(); - var next = der.offset + der.length; - - var oid = der.readOID(); - switch (oid) { - case '1.2.840.113549.1.1.1': - der._offset = next; - if (type === 'public') - return (readPkcs8RSAPublic(der)); - else - return (readPkcs8RSAPrivate(der)); - case '1.2.840.10040.4.1': - if (type === 'public') - return (readPkcs8DSAPublic(der)); - else - return (readPkcs8DSAPrivate(der)); - case '1.2.840.10045.2.1': - if (type === 'public') - return (readPkcs8ECDSAPublic(der)); - else - return (readPkcs8ECDSAPrivate(der)); - case '1.3.101.112': - if (type === 'public') { - return (readPkcs8EdDSAPublic(der)); - } else { - return (readPkcs8EdDSAPrivate(der)); - } - case '1.3.101.110': - if (type === 'public') { - return (readPkcs8X25519Public(der)); - } else { - return (readPkcs8X25519Private(der)); - } - default: - throw (new Error('Unknown key type OID ' + oid)); - } -} - -function readPkcs8RSAPublic(der) { - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - der.readSequence(); - - // modulus - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - source: der.originalInput, - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs8RSAPrivate(der) { - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var ver = readMPInt(der, 'version'); - assert.equal(ver[0], 0x0, 'unknown RSA private key version'); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8DSAPublic(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - - var y = readMPInt(der, 'y'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y } - ] - }; - - return (new Key(key)); -} - -function readPkcs8DSAPrivate(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - der.readSequence(asn1.Ber.OctetString); - var x = readMPInt(der, 'x'); - - /* The pkcs#8 format does not include the public key */ - var y = utils.calculateDSAPublic(g, p, x); - - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readECDSACurve(der) { - var curveName, curveNames; - var j, c, cd; - - if (der.peek() === asn1.Ber.OID) { - var oid = der.readOID(); - - curveNames = Object.keys(algs.curves); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - if (cd.pkcs8oid === oid) { - curveName = c; - break; - } - } - - } else { - // ECParameters sequence - der.readSequence(); - var version = der.readString(asn1.Ber.Integer, true); - assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); - - var curve = {}; - - // FieldID sequence - der.readSequence(); - var fieldTypeOid = der.readOID(); - assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', - 'ECDSA key is not from a prime-field'); - var p = curve.p = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - /* - * p always starts with a 1 bit, so count the zeros to get its - * real size. - */ - curve.size = p.length * 8 - utils.countZeros(p); - - // Curve sequence - der.readSequence(); - curve.a = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - curve.b = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - if (der.peek() === asn1.Ber.BitString) - curve.s = der.readString(asn1.Ber.BitString, true); - - // Combined Gx and Gy - curve.G = der.readString(asn1.Ber.OctetString, true); - assert.strictEqual(curve.G[0], 0x4, - 'uncompressed G is required'); - - curve.n = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - curve.h = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + - 'required'); - - curveNames = Object.keys(algs.curves); - var ks = Object.keys(curve); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - var equal = true; - for (var i = 0; i < ks.length; ++i) { - var k = ks[i]; - if (cd[k] === undefined) - continue; - if (typeof (cd[k]) === 'object' && - cd[k].equals !== undefined) { - if (!cd[k].equals(curve[k])) { - equal = false; - break; - } - } else if (Buffer.isBuffer(cd[k])) { - if (cd[k].toString('binary') - !== curve[k].toString('binary')) { - equal = false; - break; - } - } else { - if (cd[k] !== curve[k]) { - equal = false; - break; - } - } - } - if (equal) { - curveName = c; - break; - } - } - } - return (curveName); -} - -function readPkcs8ECDSAPrivate(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var version = readMPInt(der, 'version'); - assert.equal(version[0], 1, 'unknown version of ECDSA key'); - - var d = der.readString(asn1.Ber.OctetString, true); - var Q; - - if (der.peek() == 0xa0) { - der.readSequence(0xa0); - der._offset += der.length; - } - if (der.peek() == 0xa1) { - der.readSequence(0xa1); - Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - } - - if (Q === undefined) { - var pub = utils.publicFromPrivateECDSA(curveName, d); - Q = pub.part.Q.data; - } - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8ECDSAPublic(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curveName) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPublic(der) { - if (der.peek() === 0x00) - der.readByte(); - - var A = utils.readBitString(der); - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8X25519Public(der) { - var A = utils.readBitString(der); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) } - ] - }; - - return (new Key(key)); -} - -function readPkcs8EdDSAPrivate(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A; - if (der.peek() === asn1.Ber.BitString) { - A = utils.readBitString(der); - A = utils.zeroPadToLength(A, 32); - } else { - A = utils.calculateED25519Public(k); - } - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8X25519Private(der) { - if (der.peek() === 0x00) - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - var k = der.readString(asn1.Ber.OctetString, true); - k = utils.zeroPadToLength(k, 32); - - var A = utils.calculateX25519Public(k); - - var key = { - type: 'curve25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: utils.zeroPadToLength(k, 32) } - ] - }; - - return (new PrivateKey(key)); -} - -function pkcs8ToBuffer(key) { - var der = new asn1.BerWriter(); - writePkcs8(der, key); - return (der.buffer); -} - -function writePkcs8(der, key) { - der.startSequence(); - - if (PrivateKey.isPrivateKey(key)) { - var sillyInt = Buffer.from([0]); - der.writeBuffer(sillyInt, asn1.Ber.Integer); - } - - der.startSequence(); - switch (key.type) { - case 'rsa': - der.writeOID('1.2.840.113549.1.1.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8RSAPrivate(key, der); - else - writePkcs8RSAPublic(key, der); - break; - case 'dsa': - der.writeOID('1.2.840.10040.4.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8DSAPrivate(key, der); - else - writePkcs8DSAPublic(key, der); - break; - case 'ecdsa': - der.writeOID('1.2.840.10045.2.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8ECDSAPrivate(key, der); - else - writePkcs8ECDSAPublic(key, der); - break; - case 'ed25519': - der.writeOID('1.3.101.112'); - if (PrivateKey.isPrivateKey(key)) - throw (new Error('Ed25519 private keys in pkcs8 ' + - 'format are not supported')); - writePkcs8EdDSAPublic(key, der); - break; - default: - throw (new Error('Unsupported key type: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs8RSAPrivate(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([0]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8RSAPublic(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - - der.startSequence(); - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); -} - -function writePkcs8DSAPrivate(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writePkcs8DSAPublic(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writeECDSACurve(key, der) { - var curve = algs.curves[key.curve]; - if (curve.pkcs8oid) { - /* This one has a name in pkcs#8, so just write the oid */ - der.writeOID(curve.pkcs8oid); - - } else { - // ECParameters sequence - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - // FieldID sequence - der.startSequence(); - der.writeOID('1.2.840.10045.1.1'); // prime-field - der.writeBuffer(curve.p, asn1.Ber.Integer); - der.endSequence(); - - // Curve sequence - der.startSequence(); - var a = curve.p; - if (a[0] === 0x0) - a = a.slice(1); - der.writeBuffer(a, asn1.Ber.OctetString); - der.writeBuffer(curve.b, asn1.Ber.OctetString); - der.writeBuffer(curve.s, asn1.Ber.BitString); - der.endSequence(); - - der.writeBuffer(curve.G, asn1.Ber.OctetString); - der.writeBuffer(curve.n, asn1.Ber.Integer); - var h = curve.h; - if (!h) { - h = Buffer.from([1]); - } - der.writeBuffer(h, asn1.Ber.Integer); - - // ECParameters - der.endSequence(); - } -} - -function writePkcs8ECDSAPublic(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs8ECDSAPrivate(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = Buffer.from([1]); - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8EdDSAPublic(key, der) { - der.endSequence(); - - utils.writeBitString(der, key.part.A.data); -} - -function writePkcs8EdDSAPrivate(key, der) { - der.endSequence(); - - var k = utils.mpNormalize(key.part.k.data, true); - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(k, asn1.Ber.OctetString); - der.endSequence(); -} - - -/***/ }), -/* 436 */, -/* 437 */, -/* 438 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.3.20 SpeciesConstructor(O, defaultConstructor) -var anObject = __webpack_require__(990); -var aFunction = __webpack_require__(569); -var SPECIES = __webpack_require__(621)('species'); -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); -}; - - -/***/ }), -/* 439 */, -/* 440 */, -/* 441 */, -/* 442 */, -/* 443 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -const events_1 = __webpack_require__(614); -const debug_1 = __importDefault(__webpack_require__(784)); -const promisify_1 = __importDefault(__webpack_require__(537)); -const debug = debug_1.default('agent-base'); -function isAgent(v) { - return Boolean(v) && typeof v.addRequest === 'function'; -} -function isSecureEndpoint() { - const { stack } = new Error(); - if (typeof stack !== 'string') - return false; - return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1); -} -function createAgent(callback, opts) { - return new createAgent.Agent(callback, opts); -} -(function (createAgent) { - /** - * Base `http.Agent` implementation. - * No pooling/keep-alive is implemented by default. - * - * @param {Function} callback - * @api public - */ - class Agent extends events_1.EventEmitter { - constructor(callback, _opts) { - super(); - let opts = _opts; - if (typeof callback === 'function') { - this.callback = callback; - } - else if (callback) { - opts = callback; - } - // Timeout for the socket to be returned from the callback - this.timeout = null; - if (opts && typeof opts.timeout === 'number') { - this.timeout = opts.timeout; - } - // These aren't actually used by `agent-base`, but are required - // for the TypeScript definition files in `@types/node` :/ - this.maxFreeSockets = 1; - this.maxSockets = 1; - this.maxTotalSockets = Infinity; - this.sockets = {}; - this.freeSockets = {}; - this.requests = {}; - this.options = {}; - } - get defaultPort() { - if (typeof this.explicitDefaultPort === 'number') { - return this.explicitDefaultPort; - } - return isSecureEndpoint() ? 443 : 80; - } - set defaultPort(v) { - this.explicitDefaultPort = v; - } - get protocol() { - if (typeof this.explicitProtocol === 'string') { - return this.explicitProtocol; - } - return isSecureEndpoint() ? 'https:' : 'http:'; - } - set protocol(v) { - this.explicitProtocol = v; - } - callback(req, opts, fn) { - throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`'); - } - /** - * Called by node-core's "_http_client.js" module when creating - * a new HTTP request with this Agent instance. - * - * @api public - */ - addRequest(req, _opts) { - const opts = Object.assign({}, _opts); - if (typeof opts.secureEndpoint !== 'boolean') { - opts.secureEndpoint = isSecureEndpoint(); - } - if (opts.host == null) { - opts.host = 'localhost'; - } - if (opts.port == null) { - opts.port = opts.secureEndpoint ? 443 : 80; - } - if (opts.protocol == null) { - opts.protocol = opts.secureEndpoint ? 'https:' : 'http:'; - } - if (opts.host && opts.path) { - // If both a `host` and `path` are specified then it's most - // likely the result of a `url.parse()` call... we need to - // remove the `path` portion so that `net.connect()` doesn't - // attempt to open that as a unix socket file. - delete opts.path; - } - delete opts.agent; - delete opts.hostname; - delete opts._defaultAgent; - delete opts.defaultPort; - delete opts.createConnection; - // Hint to use "Connection: close" - // XXX: non-documented `http` module API :( - req._last = true; - req.shouldKeepAlive = false; - let timedOut = false; - let timeoutId = null; - const timeoutMs = opts.timeout || this.timeout; - const onerror = (err) => { - if (req._hadError) - return; - req.emit('error', err); - // For Safety. Some additional errors might fire later on - // and we need to make sure we don't double-fire the error event. - req._hadError = true; - }; - const ontimeout = () => { - timeoutId = null; - timedOut = true; - const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`); - err.code = 'ETIMEOUT'; - onerror(err); - }; - const callbackError = (err) => { - if (timedOut) - return; - if (timeoutId !== null) { - clearTimeout(timeoutId); - timeoutId = null; - } - onerror(err); - }; - const onsocket = (socket) => { - if (timedOut) - return; - if (timeoutId != null) { - clearTimeout(timeoutId); - timeoutId = null; - } - if (isAgent(socket)) { - // `socket` is actually an `http.Agent` instance, so - // relinquish responsibility for this `req` to the Agent - // from here on - debug('Callback returned another Agent instance %o', socket.constructor.name); - socket.addRequest(req, opts); - return; - } - if (socket) { - socket.once('free', () => { - this.freeSocket(socket, opts); - }); - req.onSocket(socket); - return; - } - const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``); - onerror(err); - }; - if (typeof this.callback !== 'function') { - onerror(new Error('`callback` is not defined')); - return; - } - if (!this.promisifiedCallback) { - if (this.callback.length >= 3) { - debug('Converting legacy callback function to promise'); - this.promisifiedCallback = promisify_1.default(this.callback); - } - else { - this.promisifiedCallback = this.callback; - } - } - if (typeof timeoutMs === 'number' && timeoutMs > 0) { - timeoutId = setTimeout(ontimeout, timeoutMs); - } - if ('port' in opts && typeof opts.port !== 'number') { - opts.port = Number(opts.port); - } - try { - debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`); - Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError); - } - catch (err) { - Promise.reject(err).catch(callbackError); - } - } - freeSocket(socket, opts) { - debug('Freeing socket %o %o', socket.constructor.name, opts); - socket.destroy(); - } - destroy() { - debug('Destroying agent %o', this.constructor.name); - } - } - createAgent.Agent = Agent; - // So that `instanceof` works correctly - createAgent.prototype = createAgent.Agent.prototype; -})(createAgent || (createAgent = {})); -module.exports = createAgent; -//# sourceMappingURL=index.js.map - -/***/ }), -/* 444 */, -/* 445 */, -/* 446 */, -/* 447 */, -/* 448 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -var universalUserAgent = __webpack_require__(796); -var beforeAfterHook = __webpack_require__(523); -var request = __webpack_require__(586); -var graphql = __webpack_require__(898); -var authToken = __webpack_require__(813); - -const VERSION = "4.0.5"; - -class Octokit { - constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); - const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" - } - }; // prepend default user agent with `options.userAgent` if set - - requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); - - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - - this.request = request.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) - }, options.log); - this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. - - if (!options.authStrategy) { - if (!options.auth) { - // (1) - this.auth = async () => ({ - type: "unauthenticated" - }); - } else { - // (2) - const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ - - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { - authStrategy, - ...otherOptions - } = options; - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ - - hook.wrap("request", auth.hook); - this.auth = auth; - } // apply plugins - // https://stackoverflow.com/a/16345172 - - - const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } - - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null)); - } - - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - - - static plugin(...newPlugins) { - var _a; - - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); - return NewOctokit; - } - -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; - -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 449 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var directionalMarkersGroup = /\u202A-\u202E\u061C\u200E\u200F\u2066\u2067\u2068\u2069/; -var _default = directionalMarkersGroup; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 450 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(195); -var $forEach = __webpack_require__(948)(0); -var STRICT = __webpack_require__(482)([].forEach, true); - -$export($export.P + $export.F * !STRICT, 'Array', { - // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) - forEach: function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments[1]); - } -}); - - -/***/ }), -/* 451 */, -/* 452 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var crypto = __webpack_require__(417) - -function randomString (size) { - var bits = (size + 1) * 6 - var buffer = crypto.randomBytes(Math.ceil(bits / 8)) - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '') - return string.slice(0, size) -} - -function calculatePayloadHash (payload, algorithm, contentType) { - var hash = crypto.createHash(algorithm) - hash.update('hawk.1.payload\n') - hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n') - hash.update(payload || '') - hash.update('\n') - return hash.digest('base64') -} - -exports.calculateMac = function (credentials, opts) { - var normalized = 'hawk.1.header\n' + - opts.ts + '\n' + - opts.nonce + '\n' + - (opts.method || '').toUpperCase() + '\n' + - opts.resource + '\n' + - opts.host.toLowerCase() + '\n' + - opts.port + '\n' + - (opts.hash || '') + '\n' - - if (opts.ext) { - normalized = normalized + opts.ext.replace('\\', '\\\\').replace('\n', '\\n') - } - - normalized = normalized + '\n' - - if (opts.app) { - normalized = normalized + opts.app + '\n' + (opts.dlg || '') + '\n' - } - - var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized) - var digest = hmac.digest('base64') - return digest -} - -exports.header = function (uri, method, opts) { - var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000) - var credentials = opts.credentials - if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) { - return '' - } - - if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) { - return '' - } - - var artifacts = { - ts: timestamp, - nonce: opts.nonce || randomString(6), - method: method, - resource: uri.pathname + (uri.search || ''), - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - hash: opts.hash, - ext: opts.ext, - app: opts.app, - dlg: opts.dlg - } - - if (!artifacts.hash && (opts.payload || opts.payload === '')) { - artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType) - } - - var mac = exports.calculateMac(credentials, artifacts) - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== '' - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + artifacts.ext.replace(/\\/g, '\\\\').replace(/"/g, '\\"') : '') + - '", mac="' + mac + '"' - - if (artifacts.app) { - header = header + ', app="' + artifacts.app + (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"' - } - - return header -} - - -/***/ }), -/* 453 */, -/* 454 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Stream = _interopDefault(__webpack_require__(413)); -var http = _interopDefault(__webpack_require__(605)); -var Url = _interopDefault(__webpack_require__(835)); -var whatwgUrl = _interopDefault(__webpack_require__(176)); -var https = _interopDefault(__webpack_require__(211)); -var zlib = _interopDefault(__webpack_require__(761)); - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = __webpack_require__(18).convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); -const URL = Url.URL || whatwgUrl.URL; - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -/** - * Wrapper around `new URL` to handle arbitrary URLs - * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 - */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL(urlStr).toString(); - } - - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); -} - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -const URL$1 = Url.URL || whatwgUrl.URL; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; - -const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { - const orig = new URL$1(original).hostname; - const dest = new URL$1(destination).hostname; - - return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); -}; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { - - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch.Promise; - - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1(location, request.url).toString(); - } catch (err) { - // error here can only be invalid URL in Location: header - // do not throw when options.redirect == manual - // let the user extract the errorneous redirect URL - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch.Promise = global.Promise; - -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; - - -/***/ }), -/* 455 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var http = __webpack_require__(605) -var https = __webpack_require__(211) -var url = __webpack_require__(835) -var util = __webpack_require__(669) -var stream = __webpack_require__(413) -var zlib = __webpack_require__(761) -var aws2 = __webpack_require__(942) -var aws4 = __webpack_require__(658) -var httpSignature = __webpack_require__(367) -var mime = __webpack_require__(233) -var caseless = __webpack_require__(254) -var ForeverAgent = __webpack_require__(792) -var FormData = __webpack_require__(928) -var extend = __webpack_require__(374) -var isstream = __webpack_require__(857) -var isTypedArray = __webpack_require__(978).strict -var helpers = __webpack_require__(151) -var cookies = __webpack_require__(602) -var getProxyFromURI = __webpack_require__(721) -var Querystring = __webpack_require__(902).Querystring -var Har = __webpack_require__(416).Har -var Auth = __webpack_require__(220).Auth -var OAuth = __webpack_require__(287).OAuth -var hawk = __webpack_require__(452) -var Multipart = __webpack_require__(469).Multipart -var Redirect = __webpack_require__(552).Redirect -var Tunnel = __webpack_require__(461).Tunnel -var now = __webpack_require__(551) -var Buffer = __webpack_require__(149).Buffer - -var safeStringify = helpers.safeStringify -var isReadStream = helpers.isReadStream -var toBase64 = helpers.toBase64 -var defer = helpers.defer -var copy = helpers.copy -var version = helpers.version -var globalCookieJar = cookies.jar() - -var globalPool = {} - -function filterForNonReserved (reserved, options) { - // Filter out properties that are not reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var notReserved = (reserved.indexOf(i) === -1) - if (notReserved) { - object[i] = options[i] - } - } - return object -} - -function filterOutReservedFunctions (reserved, options) { - // Filter out properties that are functions and are reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var isReserved = !(reserved.indexOf(i) === -1) - var isFunction = (typeof options[i] === 'function') - if (!(isReserved && isFunction)) { - object[i] = options[i] - } - } - return object -} - -// Return a simpler request object to allow serialization -function requestToJSON () { - var self = this - return { - uri: self.uri, - method: self.method, - headers: self.headers - } -} - -// Return a simpler response object to allow serialization -function responseToJSON () { - var self = this - return { - statusCode: self.statusCode, - body: self.body, - headers: self.headers, - request: requestToJSON.call(self.request) - } -} - -function Request (options) { - // if given the method property in options, set property explicitMethod to true - - // extend the Request instance with any non-reserved properties - // remove any reserved functions from the options object - // set Request instance to be readable and writable - // call init - - var self = this - - // start with HAR, then override with additional options - if (options.har) { - self._har = new Har(self) - options = self._har.options(options) - } - - stream.Stream.call(self) - var reserved = Object.keys(Request.prototype) - var nonReserved = filterForNonReserved(reserved, options) - - extend(self, nonReserved) - options = filterOutReservedFunctions(reserved, options) - - self.readable = true - self.writable = true - if (options.method) { - self.explicitMethod = true - } - self._qs = new Querystring(self) - self._auth = new Auth(self) - self._oauth = new OAuth(self) - self._multipart = new Multipart(self) - self._redirect = new Redirect(self) - self._tunnel = new Tunnel(self) - self.init(options) -} - -util.inherits(Request, stream.Stream) - -// Debugging -Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) -function debug () { - if (Request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} -Request.prototype.debug = debug - -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) { - options = {} - } - self.headers = self.headers ? copy(self.headers) : {} - - // Delete headers with value undefined since they break - // ClientRequest.OutgoingMessage.setHeader in node 0.12 - for (var headerName in self.headers) { - if (typeof self.headers[headerName] === 'undefined') { - delete self.headers[headerName] - } - } - - caseless.httpify(self, self.headers) - - if (!self.method) { - self.method = options.method || 'GET' - } - if (!self.localAddress) { - self.localAddress = options.localAddress - } - - self._qs.init(options) - - debug(options) - if (!self.pool && self.pool !== false) { - self.pool = globalPool - } - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) { - return // Print a warning maybe? - } - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - // People use this property instead all the time, so support it - if (!self.uri && self.url) { - self.uri = self.url - delete self.url - } - - // If there's a baseUrl, then use it as the base URL (i.e. uri must be - // specified as a relative path and is appended to baseUrl). - if (self.baseUrl) { - if (typeof self.baseUrl !== 'string') { - return self.emit('error', new Error('options.baseUrl must be a string')) - } - - if (typeof self.uri !== 'string') { - return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) - } - - if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { - return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) - } - - // Handle all cases to make sure that there's only one slash between - // baseUrl and uri. - var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 - var uriStartsWithSlash = self.uri.indexOf('/') === 0 - - if (baseUrlEndsWithSlash && uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri.slice(1) - } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri - } else if (self.uri === '') { - self.uri = self.baseUrl - } else { - self.uri = self.baseUrl + '/' + self.uri - } - delete self.baseUrl - } - - // A URI is needed by this point, emit error if we haven't been able to get one - if (!self.uri) { - return self.emit('error', new Error('options.uri is a required argument')) - } - - // If a string URI/URL was given, parse it into a URL object - if (typeof self.uri === 'string') { - self.uri = url.parse(self.uri) - } - - // Some URL objects are not from a URL parsed string and need href added - if (!self.uri.href) { - self.uri.href = url.format(self.uri) - } - - // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme - if (self.uri.protocol === 'unix:') { - return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) - } - - // Support Unix Sockets - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (!self.uri.pathname) { self.uri.pathname = '/' } - - if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { - // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - // This error was fatal - self.abort() - return self.emit('error', new Error(message)) - } - - if (!self.hasOwnProperty('proxy')) { - self.proxy = getProxyFromURI(self.uri) - } - - self.tunnel = self._tunnel.isEnabled() - if (self.proxy) { - self._tunnel.setup(options) - } - - self._redirect.onRequest(options) - - self.setHost = false - if (!self.hasHeader('host')) { - var hostHeaderName = self.originalHostHeaderName || 'host' - self.setHeader(hostHeaderName, self.uri.host) - // Drop :port suffix from Host header if known protocol. - if (self.uri.port) { - if ((self.uri.port === '80' && self.uri.protocol === 'http:') || - (self.uri.port === '443' && self.uri.protocol === 'https:')) { - self.setHeader(hostHeaderName, self.uri.hostname) - } - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 } - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - if (options.form) { - self.form(options.form) - } - - if (options.formData) { - var formData = options.formData - var requestForm = self.form() - var appendFormValue = function (key, value) { - if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) { - requestForm.append(key, value.value, value.options) - } else { - requestForm.append(key, value) - } - } - for (var formKey in formData) { - if (formData.hasOwnProperty(formKey)) { - var formValue = formData[formKey] - if (formValue instanceof Array) { - for (var j = 0; j < formValue.length; j++) { - appendFormValue(formKey, formValue[j]) - } - } else { - appendFormValue(formKey, formValue) - } - } - } - } - - if (options.qs) { - self.qs(options.qs) - } - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || '') - } - - if (self.path.length === 0) { - self.path = '/' - } - - // Auth must happen last in case signing is dependent on other headers - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { - options.auth.user = options.auth.username - } - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { - options.auth.pass = options.auth.password - } - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately, - options.auth.bearer - ) - } - - if (self.gzip && !self.hasHeader('accept-encoding')) { - self.setHeader('accept-encoding', 'gzip, deflate') - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) }) - self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) - } - - if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { - var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) }) - var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) - self.setHeader('proxy-authorization', authHeader) - } - - if (self.proxy && !self.tunnel) { - self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - } - - if (options.json) { - self.json(options.json) - } - if (options.multipart) { - self.multipart(options.multipart) - } - - if (options.time) { - self.timing = true - - // NOTE: elapsedTime is deprecated in favor of .timings - self.elapsedTime = self.elapsedTime || 0 - } - - function setContentLength () { - if (isTypedArray(self.body)) { - self.body = Buffer.from(self.body) - } - - if (!self.hasHeader('content-length')) { - var length - if (typeof self.body === 'string') { - length = Buffer.byteLength(self.body) - } else if (Array.isArray(self.body)) { - length = self.body.reduce(function (a, b) { return a + b.length }, 0) - } else { - length = self.body.length - } - - if (length) { - self.setHeader('content-length', length) - } else { - self.emit('error', new Error('Argument error, options.body.')) - } - } - } - if (self.body && !isstream(self.body)) { - setContentLength() - } - - if (options.oauth) { - self.oauth(options.oauth) - } else if (self._oauth.params && self.hasHeader('authorization')) { - self.oauth(self._oauth.params) - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - var defaultModules = {'http:': http, 'https:': https} - var httpModules = self.httpModules || {} - - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) { - return self.emit('error', new Error('Invalid protocol: ' + protocol)) - } - - if (options.ca) { - self.ca = options.ca - } - - if (!self.agent) { - if (options.agentOptions) { - self.agentOptions = options.agentOptions - } - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - var v = version() - // use ForeverAgent in node 0.10- only - if (v.major === 0 && v.minor <= 10) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - self.agentOptions = self.agentOptions || {} - self.agentOptions.keepAlive = true - } - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getNewAgent() - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) { - self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) - } - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', mime.lookup(src.path)) - } - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') - // }) - }) - - defer(function () { - if (self._aborted) { - return - } - - var end = function () { - if (self._form) { - if (!self._auth.hasAuth) { - self._form.pipe(self) - } else if (self._auth.hasAuth && self._auth.sentAuth) { - self._form.pipe(self) - } - } - if (self._multipart && self._multipart.chunked) { - self._multipart.body.pipe(self) - } - if (self.body) { - if (isstream(self.body)) { - self.body.pipe(self) - } else { - setContentLength() - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } - } else if (self.requestBodyStream) { - console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self._auth.hasAuth && !self._auth.sentAuth) { - self.end() - return - } - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - } - - if (self._form && !self.hasHeader('content-length')) { - // Before ending the request, we had to compute the length of the whole form, asyncly - self.setHeader(self._form.getHeaders(), true) - self._form.getLength(function (err, length) { - if (!err && !isNaN(length)) { - self.setHeader('content-length', length) - } - end() - }) - } else { - end() - } - - self.ntick = true - }) -} - -Request.prototype.getNewAgent = function () { - var self = this - var Agent = self.agentClass - var options = {} - if (self.agentOptions) { - for (var i in self.agentOptions) { - options[i] = self.agentOptions[i] - } - } - if (self.ca) { - options.ca = self.ca - } - if (self.ciphers) { - options.ciphers = self.ciphers - } - if (self.secureProtocol) { - options.secureProtocol = self.secureProtocol - } - if (self.secureOptions) { - options.secureOptions = self.secureOptions - } - if (typeof self.rejectUnauthorized !== 'undefined') { - options.rejectUnauthorized = self.rejectUnauthorized - } - - if (self.cert && self.key) { - options.key = self.key - options.cert = self.cert - } - - if (self.pfx) { - options.pfx = self.pfx - } - - if (self.passphrase) { - options.passphrase = self.passphrase - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== self.httpModule.Agent) { - poolKey += Agent.name - } - - // ca option is only relevant if proxy or destination are https - var proxy = self.proxy - if (typeof proxy === 'string') { - proxy = url.parse(proxy) - } - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - - if (isHttps) { - if (options.ca) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) { - poolKey += ':' - } - poolKey += options.rejectUnauthorized - } - - if (options.cert) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - } - - if (options.pfx) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.pfx.toString('ascii') - } - - if (options.ciphers) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureProtocol - } - - if (options.secureOptions) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureOptions - } - } - - if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return self.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = self.uri.protocol + poolKey - - // generate a new agent for this setting if none yet exists - if (!self.pool[poolKey]) { - self.pool[poolKey] = new Agent(options) - // properly set maxSockets on new agents - if (self.pool.maxSockets) { - self.pool[poolKey].maxSockets = self.pool.maxSockets - } - } - - return self.pool[poolKey] -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self.timing) { - // All timings will be relative to this request's startTime. In order to do this, - // we need to capture the wall-clock start time (via Date), immediately followed - // by the high-resolution timer (via now()). While these two won't be set - // at the _exact_ same time, they should be close enough to be able to calculate - // high-resolution, monotonically non-decreasing timestamps relative to startTime. - var startTime = new Date().getTime() - var startTimeNow = now() - } - - if (self._aborted) { - return - } - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - - // node v6.8.0 now supports a `timeout` value in `http.request()`, but we - // should delete it for now since we handle timeouts manually for better - // consistency with node versions before v6.8.0 - delete reqOptions.timeout - - try { - self.req = self.httpModule.request(reqOptions) - } catch (err) { - self.emit('error', err) - return - } - - if (self.timing) { - self.startTime = startTime - self.startTimeNow = startTimeNow - - // Timing values will all be relative to startTime (by comparing to startTimeNow - // so we have an accurate clock) - self.timings = {} - } - - var timeout - if (self.timeout && !self.timeoutTimer) { - if (self.timeout < 0) { - timeout = 0 - } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) { - timeout = self.timeout - } - } - - self.req.on('response', self.onRequestResponse.bind(self)) - self.req.on('error', self.onRequestError.bind(self)) - self.req.on('drain', function () { - self.emit('drain') - }) - - self.req.on('socket', function (socket) { - // `._connecting` was the old property which was made public in node v6.1.0 - var isConnecting = socket._connecting || socket.connecting - if (self.timing) { - self.timings.socket = now() - self.startTimeNow - - if (isConnecting) { - var onLookupTiming = function () { - self.timings.lookup = now() - self.startTimeNow - } - - var onConnectTiming = function () { - self.timings.connect = now() - self.startTimeNow - } - - socket.once('lookup', onLookupTiming) - socket.once('connect', onConnectTiming) - - // clean up timing event listeners if needed on error - self.req.once('error', function () { - socket.removeListener('lookup', onLookupTiming) - socket.removeListener('connect', onConnectTiming) - }) - } - } - - var setReqTimeout = function () { - // This timeout sets the amount of time to wait *between* bytes sent - // from the server once connected. - // - // In particular, it's useful for erroring if the server fails to send - // data halfway through streaming a response. - self.req.setTimeout(timeout, function () { - if (self.req) { - self.abort() - var e = new Error('ESOCKETTIMEDOUT') - e.code = 'ESOCKETTIMEDOUT' - e.connect = false - self.emit('error', e) - } - }) - } - if (timeout !== undefined) { - // Only start the connection timer if we're actually connecting a new - // socket, otherwise if we're already connected (because this is a - // keep-alive connection) do not bother. This is important since we won't - // get a 'connect' event for an already connected socket. - if (isConnecting) { - var onReqSockConnect = function () { - socket.removeListener('connect', onReqSockConnect) - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - setReqTimeout() - } - - socket.on('connect', onReqSockConnect) - - self.req.on('error', function (err) { // eslint-disable-line handle-callback-err - socket.removeListener('connect', onReqSockConnect) - }) - - // Set a timeout in memory - this block will throw if the server takes more - // than `timeout` to write the HTTP status and headers (corresponding to - // the on('response') event on the client). NB: this measures wall-clock - // time, not the time between bytes sent by the server. - self.timeoutTimer = setTimeout(function () { - socket.removeListener('connect', onReqSockConnect) - self.abort() - var e = new Error('ETIMEDOUT') - e.code = 'ETIMEDOUT' - e.connect = true - self.emit('error', e) - }, timeout) - } else { - // We're already connected - setReqTimeout() - } - } - self.emit('socket', socket) - }) - - self.emit('request', self.req) -} - -Request.prototype.onRequestError = function (error) { - var self = this - if (self._aborted) { - return - } - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' && - self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) -} - -Request.prototype.onRequestResponse = function (response) { - var self = this - - if (self.timing) { - self.timings.response = now() - self.startTimeNow - } - - debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function () { - if (self.timing) { - self.timings.end = now() - self.startTimeNow - response.timingStart = self.startTime - - // fill in the blanks for any periods that didn't trigger, such as - // no lookup or connect due to keep alive - if (!self.timings.socket) { - self.timings.socket = 0 - } - if (!self.timings.lookup) { - self.timings.lookup = self.timings.socket - } - if (!self.timings.connect) { - self.timings.connect = self.timings.lookup - } - if (!self.timings.response) { - self.timings.response = self.timings.connect - } - - debug('elapsed time', self.timings.end) - - // elapsedTime includes all redirects - self.elapsedTime += Math.round(self.timings.end) - - // NOTE: elapsedTime is deprecated in favor of .timings - response.elapsedTime = self.elapsedTime - - // timings is just for the final fetch - response.timings = self.timings - - // pre-calculate phase timings as well - response.timingPhases = { - wait: self.timings.socket, - dns: self.timings.lookup - self.timings.socket, - tcp: self.timings.connect - self.timings.lookup, - firstByte: self.timings.response - self.timings.connect, - download: self.timings.end - self.timings.response, - total: self.timings.end - } - } - debug('response end', self.uri.href, response.statusCode, response.headers) - }) - - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - - self.response = response - response.request = self - response.toJSON = responseToJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && (!response.hasOwnProperty('socket') || - !response.socket.authorized)) { - debug('strict ssl error', self.uri.href) - var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' - self.emit('error', new Error('SSL Error: ' + sslErr)) - return - } - - // Save the original host before any redirect (if it changes, we need to - // remove any authorization headers). Also remember the case of the header - // name because lots of broken servers expect Host instead of host and we - // want the caller to be able to specify this. - self.originalHost = self.getHeader('host') - if (!self.originalHostHeaderName) { - self.originalHostHeaderName = self.hasHeader('host') - } - if (self.setHost) { - self.removeHeader('host') - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar - var addCookie = function (cookie) { - // set the cookie if it's domain in the href's domain. - try { - targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) - } catch (e) { - self.emit('error', e) - } - } - - response.caseless = caseless(response.headers) - - if (response.caseless.has('set-cookie') && (!self._disableCookies)) { - var headerName = response.caseless.has('set-cookie') - if (Array.isArray(response.headers[headerName])) { - response.headers[headerName].forEach(addCookie) - } else { - addCookie(response.headers[headerName]) - } - } - - if (self._redirect.onResponse(response)) { - return // Ignore the rest of the response - } else { - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) { - self.response.emit('end') - } - }) - - response.once('end', function () { - self._ended = true - }) - - var noBody = function (code) { - return ( - self.method === 'HEAD' || - // Informational - (code >= 100 && code < 200) || - // No Content - code === 204 || - // Not Modified - code === 304 - ) - } - - var responseContent - if (self.gzip && !noBody(response.statusCode)) { - var contentEncoding = response.headers['content-encoding'] || 'identity' - contentEncoding = contentEncoding.trim().toLowerCase() - - // Be more lenient with decoding compressed responses, since (very rarely) - // servers send slightly invalid gzip responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - var zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - } - - if (contentEncoding === 'gzip') { - responseContent = zlib.createGunzip(zlibOptions) - response.pipe(responseContent) - } else if (contentEncoding === 'deflate') { - responseContent = zlib.createInflate(zlibOptions) - response.pipe(responseContent) - } else { - // Since previous versions didn't check for Content-Encoding header, - // ignore any invalid values to preserve backwards-compatibility - if (contentEncoding !== 'identity') { - debug('ignoring unrecognized Content-Encoding ' + contentEncoding) - } - responseContent = response - } - } else { - responseContent = response - } - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') - } else { - responseContent.setEncoding(self.encoding) - } - } - - if (self._paused) { - responseContent.pause() - } - - self.responseContent = responseContent - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - responseContent.on('data', function (chunk) { - if (self.timing && !self.responseStarted) { - self.responseStartTime = (new Date()).getTime() - - // NOTE: responseStartTime is deprecated in favor of .timings - response.responseStartTime = self.responseStartTime - } - self._destdata = true - self.emit('data', chunk) - }) - responseContent.once('end', function (chunk) { - self.emit('end', chunk) - }) - responseContent.on('error', function (error) { - self.emit('error', error) - }) - responseContent.on('close', function () { self.emit('close') }) - - if (self.callback) { - self.readResponseBody(response) - } else { // if no callback - self.on('end', function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response) - }) - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.readResponseBody = function (response) { - var self = this - debug("reading response's body") - var buffers = [] - var bufferLength = 0 - var strings = [] - - self.on('data', function (chunk) { - if (!Buffer.isBuffer(chunk)) { - strings.push(chunk) - } else if (chunk.length) { - bufferLength += chunk.length - buffers.push(chunk) - } - }) - self.on('end', function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request. - // This can lead to leaky behavior if the user retains a reference to the request object. - buffers = [] - bufferLength = 0 - return - } - - if (bufferLength) { - debug('has body', self.uri.href, bufferLength) - response.body = Buffer.concat(buffers, bufferLength) - if (self.encoding !== null) { - response.body = response.body.toString(self.encoding) - } - // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request. - // This can lead to leaky behavior if the user retains a reference to the request object. - buffers = [] - bufferLength = 0 - } else if (strings.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { - strings[0] = strings[0].substring(1) - } - response.body = strings.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body, self._jsonReviver) - } catch (e) { - debug('invalid JSON received', self.uri.href) - } - } - debug('emitting complete', self.uri.href) - if (typeof response.body === 'undefined' && !self._json) { - response.body = self.encoding === null ? Buffer.alloc(0) : '' - } - self.emit('complete', response, response.body) - }) -} - -Request.prototype.abort = function () { - var self = this - self._aborted = true - - if (self.req) { - self.req.abort() - } else if (self.response) { - self.response.destroy() - } - - self.emit('abort') -} - -Request.prototype.pipeDest = function (dest) { - var self = this - var response = self.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (response.caseless.has('content-type')) { - var ctname = response.caseless.has('content-type') - if (dest.setHeader) { - dest.setHeader(ctname, response.headers[ctname]) - } else { - dest.headers[ctname] = response.headers[ctname] - } - } - - if (response.caseless.has('content-length')) { - var clname = response.caseless.has('content-length') - if (dest.setHeader) { - dest.setHeader(clname, response.headers[clname]) - } else { - dest.headers[clname] = response.headers[clname] - } - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - // If the response content is being decoded, the Content-Encoding header - // of the response doesn't represent the piped content, so don't pass it. - if (!self.gzip || i !== 'content-encoding') { - dest.setHeader(i, response.headers[i]) - } - } - dest.statusCode = response.statusCode - } - if (self.pipefilter) { - self.pipefilter(response, dest) - } -} - -Request.prototype.qs = function (q, clobber) { - var self = this - var base - if (!clobber && self.uri.query) { - base = self._qs.parse(self.uri.query) - } else { - base = {} - } - - for (var i in q) { - base[i] = q[i] - } - - var qs = self._qs.stringify(base) - - if (qs === '') { - return self - } - - self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) - self.url = self.uri - self.path = self.uri.path - - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - return self -} -Request.prototype.form = function (form) { - var self = this - if (form) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.setHeader('content-type', 'application/x-www-form-urlencoded') - } - self.body = (typeof form === 'string') - ? self._qs.rfc3986(form.toString('utf8')) - : self._qs.stringify(form).toString('utf8') - return self - } - // create form-data object - self._form = new FormData() - self._form.on('error', function (err) { - err.message = 'form-data: ' + err.message - self.emit('error', err) - self.abort() - }) - return self._form -} -Request.prototype.multipart = function (multipart) { - var self = this - - self._multipart.onRequest(multipart) - - if (!self._multipart.chunked) { - self.body = self._multipart.body - } - - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) { - self.setHeader('accept', 'application/json') - } - - if (typeof self.jsonReplacer === 'function') { - self._jsonReplacer = self.jsonReplacer - } - - self._json = true - if (typeof val === 'boolean') { - if (self.body !== undefined) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.body = safeStringify(self.body, self._jsonReplacer) - } else { - self.body = self._qs.rfc3986(self.body) - } - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - } else { - self.body = safeStringify(val, self._jsonReplacer) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - - if (typeof self.jsonReviver === 'function') { - self._jsonReviver = self.jsonReviver - } - - return self -} -Request.prototype.getHeader = function (name, headers) { - var self = this - var result, re, match - if (!headers) { - headers = self.headers - } - Object.keys(headers).forEach(function (key) { - if (key.length !== name.length) { - return - } - re = new RegExp(name, 'i') - match = key.match(re) - if (match) { - result = headers[key] - } - }) - return result -} -Request.prototype.enableUnixSocket = function () { - // Get the socket & request paths from the URL - var unixParts = this.uri.path.split(':') - var host = unixParts[0] - var path = unixParts[1] - // Apply unix properties to request - this.socketPath = host - this.uri.pathname = path - this.uri.path = path - this.uri.host = host - this.uri.hostname = host - this.uri.isUnix = true -} - -Request.prototype.auth = function (user, pass, sendImmediately, bearer) { - var self = this - - self._auth.onRequest(user, pass, sendImmediately, bearer) - - return self -} -Request.prototype.aws = function (opts, now) { - var self = this - - if (!now) { - self._aws = opts - return self - } - - if (opts.sign_version === 4 || opts.sign_version === '4') { - // use aws4 - var options = { - host: self.uri.host, - path: self.uri.path, - method: self.method, - headers: self.headers, - body: self.body - } - if (opts.service) { - options.service = opts.service - } - var signRes = aws4.sign(options, { - accessKeyId: opts.key, - secretAccessKey: opts.secret, - sessionToken: opts.session - }) - self.setHeader('authorization', signRes.headers.Authorization) - self.setHeader('x-amz-date', signRes.headers['X-Amz-Date']) - if (signRes.headers['X-Amz-Security-Token']) { - self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token']) - } - } else { - // default: use aws-sign2 - var date = new Date() - self.setHeader('date', date.toUTCString()) - var auth = { - key: opts.key, - secret: opts.secret, - verb: self.method.toUpperCase(), - date: date, - contentType: self.getHeader('content-type') || '', - md5: self.getHeader('content-md5') || '', - amazonHeaders: aws2.canonicalizeHeaders(self.headers) - } - var path = self.uri.path - if (opts.bucket && path) { - auth.resource = '/' + opts.bucket + path - } else if (opts.bucket && !path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && path) { - auth.resource = path - } else if (!opts.bucket && !path) { - auth.resource = '/' - } - auth.resource = aws2.canonicalizeResource(auth.resource) - self.setHeader('authorization', aws2.authorization(auth)) - } - - return self -} -Request.prototype.httpSignature = function (opts) { - var self = this - httpSignature.signRequest({ - getHeader: function (header) { - return self.getHeader(header, self.headers) - }, - setHeader: function (header, value) { - self.setHeader(header, value) - }, - method: self.method, - path: self.path - }, opts) - debug('httpSignature authorization', self.getHeader('authorization')) - - return self -} -Request.prototype.hawk = function (opts) { - var self = this - self.setHeader('Authorization', hawk.header(self.uri, self.method, opts)) -} -Request.prototype.oauth = function (_oauth) { - var self = this - - self._oauth.onRequest(_oauth) - - return self -} - -Request.prototype.jar = function (jar) { - var self = this - var cookies - - if (self._redirect.redirectsFollowed === 0) { - self.originalCookieHeader = self.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - self._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar - var urihref = self.uri.href - // fetch cookie in the Specified host - if (targetCookieJar) { - cookies = targetCookieJar.getCookieString(urihref) - } - } - - // if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (self.originalCookieHeader) { - // Don't overwrite existing Cookie header - self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) - } else { - self.setHeader('cookie', cookies) - } - } - self._jar = jar - return self -} - -// Stream API -Request.prototype.pipe = function (dest, opts) { - var self = this - - if (self.response) { - if (self._destdata) { - self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) - } else if (self._ended) { - self.emit('error', new Error('You cannot pipe after the response has been ended.')) - } else { - stream.Stream.prototype.pipe.call(self, dest, opts) - self.pipeDest(dest) - return dest - } - } else { - self.dests.push(dest) - stream.Stream.prototype.pipe.call(self, dest, opts) - return dest - } -} -Request.prototype.write = function () { - var self = this - if (self._aborted) { return } - - if (!self._started) { - self.start() - } - if (self.req) { - return self.req.write.apply(self.req, arguments) - } -} -Request.prototype.end = function (chunk) { - var self = this - if (self._aborted) { return } - - if (chunk) { - self.write(chunk) - } - if (!self._started) { - self.start() - } - if (self.req) { - self.req.end() - } -} -Request.prototype.pause = function () { - var self = this - if (!self.responseContent) { - self._paused = true - } else { - self.responseContent.pause.apply(self.responseContent, arguments) - } -} -Request.prototype.resume = function () { - var self = this - if (!self.responseContent) { - self._paused = false - } else { - self.responseContent.resume.apply(self.responseContent, arguments) - } -} -Request.prototype.destroy = function () { - var self = this - if (!self._ended) { - self.end() - } else if (self.response) { - self.response.destroy() - } -} - -Request.defaultProxyHeaderWhiteList = - Tunnel.defaultProxyHeaderWhiteList.slice() - -Request.defaultProxyHeaderExclusiveList = - Tunnel.defaultProxyHeaderExclusiveList.slice() - -// Exports - -Request.prototype.toJSON = requestToJSON -module.exports = Request - - -/***/ }), -/* 456 */, -/* 457 */, -/* 458 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); - -var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); - -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); - -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - -var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractUrlsWithIndices["default"])(text, options).concat((0, _extractMentionsOrListsWithIndices["default"])(text)).concat((0, _extractHashtagsWithIndices["default"])(text, { - checkUrlOverlap: false - })).concat((0, _extractCashtagsWithIndices["default"])(text)); - - if (entities.length == 0) { - return []; - } - - (0, _removeOverlappingEntities["default"])(entities); - return entities; -} - -module.exports = exports.default; - -/***/ }), -/* 459 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(604); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// this essentially does text.split(/<|>/) -// except that won't work in IE, where empty strings are ommitted -// so "<>".split(/<|>/) => [] in IE, but is ["", "", ""] in all others -// but "<<".split("<") => ["", "", ""] -function _default(text) { - var firstSplits = text.split('<'), - secondSplits, - allSplits = [], - split; - - for (var i = 0; i < firstSplits.length; i += 1) { - split = firstSplits[i]; - - if (!split) { - allSplits.push(''); - } else { - secondSplits = split.split('>'); - - for (var j = 0; j < secondSplits.length; j += 1) { - allSplits.push(secondSplits[j]); - } - } - } - - return allSplits; -} - -module.exports = exports.default; - -/***/ }), -/* 460 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPctEncoded = /(?:%[0-9a-f]{2})/i; -var _default = validateUrlPctEncoded; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 461 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var url = __webpack_require__(835) -var tunnel = __webpack_require__(875) - -var defaultProxyHeaderWhiteList = [ - 'accept', - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept-ranges', - 'cache-control', - 'content-encoding', - 'content-language', - 'content-location', - 'content-md5', - 'content-range', - 'content-type', - 'connection', - 'date', - 'expect', - 'max-forwards', - 'pragma', - 'referer', - 'te', - 'user-agent', - 'via' -] - -var defaultProxyHeaderExclusiveList = [ - 'proxy-authorization' -] - -function constructProxyHost (uriObject) { - var port = uriObject.port - var protocol = uriObject.protocol - var proxyHost = uriObject.hostname + ':' - - if (port) { - proxyHost += port - } else if (protocol === 'https:') { - proxyHost += '443' - } else { - proxyHost += '80' - } - - return proxyHost -} - -function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) { - var whiteList = proxyHeaderWhiteList - .reduce(function (set, header) { - set[header.toLowerCase()] = true - return set - }, {}) - - return Object.keys(headers) - .filter(function (header) { - return whiteList[header.toLowerCase()] - }) - .reduce(function (set, header) { - set[header] = headers[header] - return set - }, {}) -} - -function constructTunnelOptions (request, proxyHeaders) { - var proxy = request.proxy - - var tunnelOptions = { - proxy: { - host: proxy.hostname, - port: +proxy.port, - proxyAuth: proxy.auth, - headers: proxyHeaders - }, - headers: request.headers, - ca: request.ca, - cert: request.cert, - key: request.key, - passphrase: request.passphrase, - pfx: request.pfx, - ciphers: request.ciphers, - rejectUnauthorized: request.rejectUnauthorized, - secureOptions: request.secureOptions, - secureProtocol: request.secureProtocol - } - - return tunnelOptions -} - -function constructTunnelFnName (uri, proxy) { - var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') - var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') - return [uriProtocol, proxyProtocol].join('Over') -} - -function getTunnelFn (request) { - var uri = request.uri - var proxy = request.proxy - var tunnelFnName = constructTunnelFnName(uri, proxy) - return tunnel[tunnelFnName] -} - -function Tunnel (request) { - this.request = request - this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList - this.proxyHeaderExclusiveList = [] - if (typeof request.tunnel !== 'undefined') { - this.tunnelOverride = request.tunnel - } -} - -Tunnel.prototype.isEnabled = function () { - var self = this - var request = self.request - // Tunnel HTTPS by default. Allow the user to override this setting. - - // If self.tunnelOverride is set (the user specified a value), use it. - if (typeof self.tunnelOverride !== 'undefined') { - return self.tunnelOverride - } - - // If the destination is HTTPS, tunnel. - if (request.uri.protocol === 'https:') { - return true - } - - // Otherwise, do not use tunnel. - return false -} - -Tunnel.prototype.setup = function (options) { - var self = this - var request = self.request - - options = options || {} - - if (typeof request.proxy === 'string') { - request.proxy = url.parse(request.proxy) - } - - if (!request.proxy || !request.tunnel) { - return false - } - - // Setup Proxy Header Exclusive List and White List - if (options.proxyHeaderWhiteList) { - self.proxyHeaderWhiteList = options.proxyHeaderWhiteList - } - if (options.proxyHeaderExclusiveList) { - self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList - } - - var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) - var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - - // Setup Proxy Headers and Proxy Headers Host - // Only send the Proxy White Listed Header names - var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) - proxyHeaders.host = constructProxyHost(request.uri) - - proxyHeaderExclusiveList.forEach(request.removeHeader, request) - - // Set Agent from Tunnel Data - var tunnelFn = getTunnelFn(request) - var tunnelOptions = constructTunnelOptions(request, proxyHeaders) - request.agent = tunnelFn(tunnelOptions) - - return true -} - -Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList -Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList -exports.Tunnel = Tunnel - - -/***/ }), -/* 462 */, -/* 463 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var deprecation = __webpack_require__(692); -var once = _interopDefault(__webpack_require__(49)); - -const logOnceCode = once(deprecation => console.warn(deprecation)); -const logOnceHeaders = once(deprecation => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ - -class RequestError extends Error { - constructor(message, statusCode, options) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = "HttpError"; - this.status = statusCode; - let headers; - - if ("headers" in options && typeof options.headers !== "undefined") { - headers = options.headers; - } - - if ("response" in options) { - this.response = options.response; - headers = options.response.headers; - } // redact request credentials without mutating original request options - - - const requestCopy = Object.assign({}, options.request); - - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") - }); - } - - requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; // deprecations - - Object.defineProperty(this, "code", { - get() { - logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); - return statusCode; - } - - }); - Object.defineProperty(this, "headers", { - get() { - logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); - return headers || {}; - } - - }); - } - -} - -exports.RequestError = RequestError; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 464 */, -/* 465 */ -/***/ (function(module) { - -module.exports = {"$id":"log.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["version","creator","entries"],"properties":{"version":{"type":"string"},"creator":{"$ref":"creator.json#"},"browser":{"$ref":"browser.json#"},"pages":{"type":"array","items":{"$ref":"page.json#"}},"entries":{"type":"array","items":{"$ref":"entry.json#"}},"comment":{"type":"string"}}}; - -/***/ }), -/* 466 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -/*eslint-disable max-len,no-use-before-define*/ - -var common = __webpack_require__(701); -var YAMLException = __webpack_require__(652); -var makeSnippet = __webpack_require__(98); -var DEFAULT_SCHEMA = __webpack_require__(344); - - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - - -var CONTEXT_FLOW_IN = 1; -var CONTEXT_FLOW_OUT = 2; -var CONTEXT_BLOCK_IN = 3; -var CONTEXT_BLOCK_OUT = 4; - - -var CHOMPING_CLIP = 1; -var CHOMPING_STRIP = 2; -var CHOMPING_KEEP = 3; - - -var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; -var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; -var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; -var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; -var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; - - -function _class(obj) { return Object.prototype.toString.call(obj); } - -function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); -} - -function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); -} - -function is_WS_OR_EOL(c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); -} - -function is_FLOW_INDICATOR(c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */; -} - -function fromHexCode(c) { - var lc; - - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; - } - - /*eslint-disable no-bitwise*/ - lc = c | 0x20; - - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10; - } - - return -1; -} - -function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } - return 0; -} - -function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; - } - - return -1; -} - -function simpleEscapeSequence(c) { - /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; -} - -function charFromCodepoint(c) { - if (c <= 0xFFFF) { - return String.fromCharCode(c); - } - // Encode UTF-16 surrogate pair - // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ); -} - -var simpleEscapeCheck = new Array(256); // integer, for fast access -var simpleEscapeMap = new Array(256); -for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); -} - - -function State(input, options) { - this.input = input; - - this.filename = options['filename'] || null; - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.onWarning = options['onWarning'] || null; - // (Hidden) Remove? makes the loader to expect YAML 1.1 documents - // if such documents have no explicit %YAML directive - this.legacy = options['legacy'] || false; - - this.json = options['json'] || false; - this.listener = options['listener'] || null; - - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; - - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; - - // position of first leading tab in the current line, - // used to make sure there are no tabs in the indentation - this.firstTabInLine = -1; - - this.documents = []; - - /* - this.version; - this.checkLineBreaks; - this.tagMap; - this.anchorMap; - this.tag; - this.anchor; - this.kind; - this.result;*/ - -} - - -function generateError(state, message) { - var mark = { - name: state.filename, - buffer: state.input.slice(0, -1), // omit trailing \0 - position: state.position, - line: state.line, - column: state.position - state.lineStart - }; - - mark.snippet = makeSnippet(mark); - - return new YAMLException(message, mark); -} - -function throwError(state, message) { - throw generateError(state, message); -} - -function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); - } -} - - -var directiveHandlers = { - - YAML: function handleYamlDirective(state, name, args) { - - var match, major, minor; - - if (state.version !== null) { - throwError(state, 'duplication of %YAML directive'); - } - - if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument'); - } - - match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - - if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive'); - } - - major = parseInt(match[1], 10); - minor = parseInt(match[2], 10); - - if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document'); - } - - state.version = args[0]; - state.checkLineBreaks = (minor < 2); - - if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document'); - } - }, - - TAG: function handleTagDirective(state, name, args) { - - var handle, prefix; - - if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments'); - } - - handle = args[0]; - prefix = args[1]; - - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); - } - - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } - - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); - } - - try { - prefix = decodeURIComponent(prefix); - } catch (err) { - throwError(state, 'tag prefix is malformed: ' + prefix); - } - - state.tagMap[handle] = prefix; - } -}; - - -function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; - - if (start < end) { - _result = state.input.slice(start, end); - - if (checkJson) { - for (_position = 0, _length = _result.length; _position < _length; _position += 1) { - _character = _result.charCodeAt(_position); - if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character'); - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters'); - } - - state.result += _result; - } -} - -function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; - - if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); - } - - sourceKeys = Object.keys(source); - - for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - key = sourceKeys[index]; - - if (!_hasOwnProperty.call(destination, key)) { - destination[key] = source[key]; - overridableKeys[key] = true; - } - } -} - -function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, - startLine, startLineStart, startPos) { - - var index, quantity; - - // The output is a plain object here, so keys can only be strings. - // We need to convert keyNode to a string, but doing so can hang the process - // (deeply nested arrays that explode exponentially using aliases). - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); - - for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys'); - } - - if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]'; - } - } - } - - // Avoid code execution in load() via toString property - // (still use its own toString for arrays, timestamps, - // and whatever user schema extensions happen to have @@toStringTag) - if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]'; - } - - - keyNode = String(keyNode); - - if (_result === null) { - _result = {}; - } - - if (keyTag === 'tag:yaml.org,2002:merge') { - if (Array.isArray(valueNode)) { - for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && - !_hasOwnProperty.call(overridableKeys, keyNode) && - _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.lineStart = startLineStart || state.lineStart; - state.position = startPos || state.position; - throwError(state, 'duplicated mapping key'); - } - - // used for this specific key only because Object.defineProperty is slow - if (keyNode === '__proto__') { - Object.defineProperty(_result, keyNode, { - configurable: true, - enumerable: true, - writable: true, - value: valueNode - }); - } else { - _result[keyNode] = valueNode; - } - delete overridableKeys[keyNode]; - } - - return _result; -} - -function readLineBreak(state) { - var ch; - - ch = state.input.charCodeAt(state.position); - - if (ch === 0x0A/* LF */) { - state.position++; - } else if (ch === 0x0D/* CR */) { - state.position++; - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++; - } - } else { - throwError(state, 'a line break is expected'); - } - - state.line += 1; - state.lineStart = state.position; - state.firstTabInLine = -1; -} - -function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); - - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { - state.firstTabInLine = state.position; - } - ch = state.input.charCodeAt(++state.position); - } - - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); - } - - if (is_EOL(ch)) { - readLineBreak(state); - - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; - - while (ch === 0x20/* Space */) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - } else { - break; - } - } - - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation'); - } - - return lineBreaks; -} - -function testDocumentSeparator(state) { - var _position = state.position, - ch; - - ch = state.input.charCodeAt(_position); - - // Condition state.position === state.lineStart is tested - // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { - - _position += 3; - - ch = state.input.charCodeAt(_position); - - if (ch === 0 || is_WS_OR_EOL(ch)) { - return true; - } - } - - return false; -} - -function writeFoldedLines(state, count) { - if (count === 1) { - state.result += ' '; - } else if (count > 1) { - state.result += common.repeat('\n', count - 1); - } -} - - -function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; - - ch = state.input.charCodeAt(state.position); - - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false; - } - - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); - - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; - } - } - - state.kind = 'scalar'; - state.result = ''; - captureStart = captureEnd = state.position; - hasPendingContent = false; - - while (ch !== 0) { - if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); - - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; - } - - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); - - if (is_WS_OR_EOL(preceding)) { - break; - } - - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { - break; - - } else if (is_EOL(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); - - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; - } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; - } - } - - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; - } - - if (!is_WHITE_SPACE(ch)) { - captureEnd = state.position + 1; - } - - ch = state.input.charCodeAt(++state.position); - } - - captureSegment(state, captureStart, captureEnd, false); - - if (state.result) { - return true; - } - - state.kind = _kind; - state.result = _result; - return false; -} - -function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x27/* ' */) { - return false; - } - - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - - if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } - - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar'); - - } else { - state.position++; - captureEnd = state.position; - } - } - - throwError(state, 'unexpected end of the stream within a single quoted scalar'); -} - -function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x22/* " */) { - return false; - } - - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; - - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); - - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; - - } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; - - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); - - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; - - } else { - throwError(state, 'expected hexadecimal character'); - } - } - - state.result += charFromCodepoint(hexResult); - - state.position++; - - } else { - throwError(state, 'unknown escape sequence'); - } - - captureStart = captureEnd = state.position; - - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar'); - - } else { - state.position++; - captureEnd = state.position; - } - } - - throwError(state, 'unexpected end of the stream within a double quoted scalar'); -} - -function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _lineStart, - _pos, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = Object.create(null), - keyNode, - keyTag, - valueNode, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; - } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; - } else { - return false; - } - - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } - - ch = state.input.charCodeAt(++state.position); - - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); - - ch = state.input.charCodeAt(state.position); - - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? 'mapping' : 'sequence'; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries'); - } else if (ch === 0x2C/* , */) { - // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 - throwError(state, "expected the node content, but found ','"); - } - - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; - - if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); - - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); - } - } - - _line = state.line; // Save the current line. - _lineStart = state.lineStart; - _pos = state.position; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); - - ch = state.input.charCodeAt(state.position); - - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } - - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); - } else { - _result.push(keyNode); - } - - skipSeparationSpace(state, true, nodeIndent); - - ch = state.input.charCodeAt(state.position); - - if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; - } - } - - throwError(state, 'unexpected end of the stream within a flow collection'); -} - -function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch === 0x7C/* | */) { - folding = false; - } else if (ch === 0x3E/* > */) { - folding = true; - } else { - return false; - } - - state.kind = 'scalar'; - state.result = ''; - - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); - - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, 'repeat of a chomping mode identifier'); - } - - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, 'repeat of an indentation width identifier'); - } - - } else { - break; - } - } - - if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); - - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); - } - } - - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; - - ch = state.input.charCodeAt(state.position); - - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } - - if (is_EOL(ch)) { - emptyLines++; - continue; - } - - // End of the scalar. - if (state.lineIndent < textIndent) { - - // Perform the chomping. - if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n'; - } - } - - // Break this `while` cycle and go to the funciton's epilogue. - break; - } - - // Folded style: use fancy rules to handle line breaks. - if (folding) { - - // Lines starting with white space characters (more-indented lines) are not folded. - if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - - // End of more-indented block. - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); - - // Just one line break - perceive as the same line. - } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' '; - } - - // Several line breaks - perceive as different lines. - } else { - state.result += common.repeat('\n', emptyLines); - } - - // Literal style: just add exact number of line breaks between content lines. - } else { - // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } - - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - captureStart = state.position; - - while (!is_EOL(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position); - } - - captureSegment(state, captureStart, state.position, false); - } - - return true; -} - -function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; - - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; - - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } - - ch = state.input.charCodeAt(state.position); - - while (ch !== 0) { - if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); - } - - if (ch !== 0x2D/* - */) { - break; - } - - following = state.input.charCodeAt(state.position + 1); - - if (!is_WS_OR_EOL(following)) { - break; - } - - detected = true; - state.position++; - - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } - } - - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); - - ch = state.input.charCodeAt(state.position); - - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'sequence'; - state.result = _result; - return true; - } - return false; -} - -function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _keyLine, - _keyLineStart, - _keyPos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = Object.create(null), - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; - - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; - - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } - - ch = state.input.charCodeAt(state.position); - - while (ch !== 0) { - if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); - } - - following = state.input.charCodeAt(state.position + 1); - _line = state.line; // Save the current line. - - // - // Explicit notation case. There are two separate blocks: - // first for the key (denoted by "?") and second for the value (denoted by ":") - // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - - detected = true; - atExplicitKey = true; - allowCompact = true; - - } else if (atExplicitKey) { - // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false; - allowCompact = true; - - } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); - } - - state.position += 1; - ch = following; - - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // - } else { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - - if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - // Neither implicit nor explicit notation. - // Reading is done. Go to the epilogue. - break; - } - - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); - - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); - - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); - } - - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; - - } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed'); - - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } - - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); - - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } - } - - // - // Common reading code for both explicit and implicit notations. - // - if (state.line === _line || state.lineIndent > nodeIndent) { - if (atExplicitKey) { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - } - - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; - } - } - - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } - - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - } - - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } - } - - // - // Epilogue. - // - - // Special case: last mapping's node contains only the key in explicit notation. - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - } - - // Expose the resulting mapping. - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'mapping'; - state.result = _result; - } - - return detected; -} - -function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x21/* ! */) return false; - - if (state.tag !== null) { - throwError(state, 'duplication of a tag property'); - } - - ch = state.input.charCodeAt(++state.position); - - if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); - - } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); - - } else { - tagHandle = '!'; - } - - _position = state.position; - - if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); - - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, 'unexpected end of the stream within a verbatim tag'); - } - } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); - - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); - } - - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); - } - } - - ch = state.input.charCodeAt(++state.position); - } - - tagName = state.input.slice(_position, state.position); - - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters'); - } - } - - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName); - } - - try { - tagName = decodeURIComponent(tagName); - } catch (err) { - throwError(state, 'tag name is malformed: ' + tagName); - } - - if (isVerbatim) { - state.tag = tagName; - - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; - - } else if (tagHandle === '!') { - state.tag = '!' + tagName; - - } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName; - - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); - } - - return true; -} - -function readAnchorProperty(state) { - var _position, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x26/* & */) return false; - - if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property'); - } - - ch = state.input.charCodeAt(++state.position); - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character'); - } - - state.anchor = state.input.slice(_position, state.position); - return true; -} - -function readAlias(state) { - var _position, alias, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x2A/* * */) return false; - - ch = state.input.charCodeAt(++state.position); - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character'); - } - - alias = state.input.slice(_position, state.position); - - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); - } - - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; -} - -function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } - } - - if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; - - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } else { - allowBlockCollections = false; - } - } - } - - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; - } - - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; - } else { - flowIndent = parentIndent + 1; - } - - blockIndent = state.position - state.lineStart; - - if (indentStatus === 1) { - if (allowBlockCollections && - (readBlockSequence(state, blockIndent) || - readBlockMapping(state, blockIndent, flowIndent)) || - readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || - readSingleQuotedScalar(state, flowIndent) || - readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; - - } else if (readAlias(state)) { - hasContent = true; - - if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties'); - } - - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; - - if (state.tag === null) { - state.tag = '?'; - } - } - - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - } - } else if (indentStatus === 0) { - // Special case: block sequences are allowed to have same indentation level as the parent. - // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); - } - } - - if (state.tag === null) { - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - - } else if (state.tag === '?') { - // Implicit resolving is not allowed for non-scalar types, and '?' - // non-specific tag is only automatically assigned to plain scalars. - // - // We only need to check kind conformity in case user explicitly assigns '?' - // tag, for example like this: "! [0]" - // - if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); - } - - for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex]; - - if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result); - state.tag = type.tag; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - break; - } - } - } else if (state.tag !== '!') { - if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag]; - } else { - // looking for multi type - type = null; - typeList = state.typeMap.multi[state.kind || 'fallback']; - - for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { - if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { - type = typeList[typeIndex]; - break; - } - } - } - - if (!type) { - throwError(state, 'unknown tag !<' + state.tag + '>'); - } - - if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); - } - - if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); - } else { - state.result = type.construct(state.result, state.tag); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - } - } - - if (state.listener !== null) { - state.listener('close', state); - } - return state.tag !== null || state.anchor !== null || hasContent; -} - -function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, - ch; - - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = Object.create(null); - state.anchorMap = Object.create(null); - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); - - ch = state.input.charCodeAt(state.position); - - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; - } - - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; - - if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length'); - } - - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); - break; - } - - if (is_EOL(ch)) break; - - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); - } - - directiveArgs.push(state.input.slice(_position, state.position)); - } - - if (ch !== 0) readLineBreak(state); - - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); - } - } - - skipSeparationSpace(state, true, -1); - - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - - } else if (hasDirectives) { - throwError(state, 'directives end mark is expected'); - } - - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); - - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content'); - } - - state.documents.push(state.result); - - if (state.position === state.lineStart && testDocumentSeparator(state)) { - - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } - return; - } - - if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected'); - } else { - return; - } -} - - -function loadDocuments(input, options) { - input = String(input); - options = options || {}; - - if (input.length !== 0) { - - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; - } - - // Strip BOM - if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1); - } - } - - var state = new State(input, options); - - var nullpos = input.indexOf('\0'); - - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, 'null byte is not allowed in input'); - } - - // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0'; - - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1; - state.position += 1; - } - - while (state.position < (state.length - 1)) { - readDocument(state); - } - - return state.documents; -} - - -function loadAll(input, iterator, options) { - if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator; - iterator = null; - } - - var documents = loadDocuments(input, options); - - if (typeof iterator !== 'function') { - return documents; - } - - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); - } -} - - -function load(input, options) { - var documents = loadDocuments(input, options); - - if (documents.length === 0) { - /*eslint-disable no-undefined*/ - return undefined; - } else if (documents.length === 1) { - return documents[0]; - } - throw new YAMLException('expected a single document in the stream, but found more'); -} - - -module.exports.loadAll = loadAll; -module.exports.load = load; - - -/***/ }), -/* 467 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _configs = _interopRequireDefault(__webpack_require__(125)); - -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - -var _getCharacterWeight = _interopRequireDefault(__webpack_require__(41)); - -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); - -var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - -var _parseTweet = _interopRequireDefault(__webpack_require__(166)); - -var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var getTweetLength = function getTweetLength(text) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - return (0, _parseTweet["default"])(text, options).weightedLength; -}; - -var _default = getTweetLength; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 468 */, -/* 469 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var uuid = __webpack_require__(826) -var CombinedStream = __webpack_require__(2) -var isstream = __webpack_require__(857) -var Buffer = __webpack_require__(149).Buffer - -function Multipart (request) { - this.request = request - this.boundary = uuid() - this.chunked = false - this.body = null -} - -Multipart.prototype.isChunked = function (options) { - var self = this - var chunked = false - var parts = options.data || options - - if (!parts.forEach) { - self.request.emit('error', new Error('Argument error, options.multipart.')) - } - - if (options.chunked !== undefined) { - chunked = options.chunked - } - - if (self.request.getHeader('transfer-encoding') === 'chunked') { - chunked = true - } - - if (!chunked) { - parts.forEach(function (part) { - if (typeof part.body === 'undefined') { - self.request.emit('error', new Error('Body attribute missing in multipart.')) - } - if (isstream(part.body)) { - chunked = true - } - }) - } - - return chunked -} - -Multipart.prototype.setHeaders = function (chunked) { - var self = this - - if (chunked && !self.request.hasHeader('transfer-encoding')) { - self.request.setHeader('transfer-encoding', 'chunked') - } - - var header = self.request.getHeader('content-type') - - if (!header || header.indexOf('multipart') === -1) { - self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - if (header.indexOf('boundary') !== -1) { - self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') - } else { - self.request.setHeader('content-type', header + '; boundary=' + self.boundary) - } - } -} - -Multipart.prototype.build = function (parts, chunked) { - var self = this - var body = chunked ? new CombinedStream() : [] - - function add (part) { - if (typeof part === 'number') { - part = part.toString() - } - return chunked ? body.append(part) : body.push(Buffer.from(part)) - } - - if (self.request.preambleCRLF) { - add('\r\n') - } - - parts.forEach(function (part) { - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - if (key === 'body') { return } - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - add(preamble) - add(part.body) - add('\r\n') - }) - add('--' + self.boundary + '--') - - if (self.request.postambleCRLF) { - add('\r\n') - } - - return body -} - -Multipart.prototype.onRequest = function (options) { - var self = this - - var chunked = self.isChunked(options) - var parts = options.data || options - - self.setHeaders(chunked) - self.chunked = chunked - self.body = self.build(parts, chunked) -} - -exports.Multipart = Multipart - - -/***/ }), -/* 470 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __webpack_require__(431); -const file_command_1 = __webpack_require__(102); -const utils_1 = __webpack_require__(82); -const os = __importStar(__webpack_require__(87)); -const path = __importStar(__webpack_require__(622)); -const uuid_1 = __webpack_require__(25); -const oidc_utils_1 = __webpack_require__(742); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter. - if (name.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedVal.includes(delimiter)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); - } - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); - } -} -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); -} -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueCommand('PATH', inputPath); - } - else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; -} -exports.addPath = addPath; -/** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); -} -exports.getInput = getInput; -/** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ -function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - return inputs; -} -exports.getMultilineInput = getMultilineInput; -/** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ -function getBooleanInput(name, options) { - const trueValue = ['true', 'True', 'TRUE']; - const falseValue = ['false', 'False', 'FALSE']; - const val = getInput(name, options); - if (trueValue.includes(val)) - return true; - if (falseValue.includes(val)) - return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -exports.getBooleanInput = getBooleanInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, value); -} -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); -} -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; -} -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - command_1.issueCommand('debug', {}, message); -} -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function error(message, properties = {}) { - command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.error = error; -/** - * Adds a warning issue - * @param message warning issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function warning(message, properties = {}) { - command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.warning = warning; -/** - * Adds a notice issue - * @param message notice issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function notice(message, properties = {}) { - command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.notice = notice; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); -} -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - command_1.issue('group', name); -} -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - command_1.issue('endgroup'); -} -exports.endGroup = endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } - finally { - endGroup(); - } - return result; - }); -} -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); -} -exports.saveState = saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; -} -exports.getState = getState; -function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); -} -exports.getIDToken = getIDToken; -/** - * Summary exports - */ -var summary_1 = __webpack_require__(665); -Object.defineProperty(exports, "summary", { enumerable: true, get: function () { return summary_1.summary; } }); -/** - * @deprecated use core.summary - */ -var summary_2 = __webpack_require__(665); -Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; } }); -/** - * Path exports - */ -var path_utils_1 = __webpack_require__(573); -Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } }); -Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } }); -Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }); -//# sourceMappingURL=core.js.map - -/***/ }), -/* 471 */, -/* 472 */, -/* 473 */, -/* 474 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var classof = __webpack_require__(324); -var ITERATOR = __webpack_require__(621)('iterator'); -var Iterators = __webpack_require__(907); -module.exports = __webpack_require__(245).getIteratorMethod = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; - - -/***/ }), -/* 475 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -var isPlainObject = __webpack_require__(356); -var universalUserAgent = __webpack_require__(796); - -function lowercaseKeys(object) { - if (!object) { - return {}; - } - - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} - -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { - [key]: options[key] - }); - } - }); - return result; -} - -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - - return obj; -} - -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); - } else { - options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates - - - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging - - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten - - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); - } - - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); - return mergedOptions; -} - -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - - if (names.length === 0) { - return url; - } - - return url + separator + names.map(name => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} - -const urlVariableRegex = /\{[^}]+\}/g; - -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} - -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - - if (!matches) { - return []; - } - - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} - -function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} - -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* istanbul ignore file */ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - - return part; - }).join(""); -} - -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} - -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} - -function isDefined(value) { - return value !== undefined && value !== null; -} - -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} - -function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); - - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - - return result; -} - -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} - -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - - if (operator && operator !== "+") { - var separator = ","; - - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); -} - -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible - - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later - - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); - } - - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - - - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } // default content-type for JSON if body is set - - - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - - - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } // Only return body/request keys if present - - - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); -} - -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} - -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); -} - -const VERSION = "7.0.2"; - -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. - -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "", - previews: [] - } -}; - -const endpoint = withDefaults(null, DEFAULTS); - -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 476 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlIpv = _interopRequireDefault(__webpack_require__(115)); - -var _validateUrlIpv2 = _interopRequireDefault(__webpack_require__(871)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Punting on IPvFuture for now -var validateUrlIp = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIpv4}|' + '#{validateUrlIpv6}' + ')', { - validateUrlIpv4: _validateUrlIpv["default"], - validateUrlIpv6: _validateUrlIpv2["default"] -}, 'i'); -var _default = validateUrlIp; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 477 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var urlHasHttps = /^https:\/\//i; -var _default = urlHasHttps; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 478 */, -/* 479 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_if(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - var $thenSch = it.schema['then'], - $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), - $currentBaseId = $it.baseId; - if ($thenPresent || $elsePresent) { - var $ifClause; - $it.createErrors = false; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - $it.createErrors = true; - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - if ($thenPresent) { - out += ' if (' + ($nextValid) + ') { '; - $it.schema = it.schema['then']; - $it.schemaPath = it.schemaPath + '.then'; - $it.errSchemaPath = it.errSchemaPath + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'then\'; '; - } else { - $ifClause = '\'then\''; - } - out += ' } '; - if ($elsePresent) { - out += ' else { '; - } - } else { - out += ' if (!' + ($nextValid) + ') { '; - } - if ($elsePresent) { - $it.schema = it.schema['else']; - $it.schemaPath = it.schemaPath + '.else'; - $it.errSchemaPath = it.errSchemaPath + '/else'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'else\'; '; - } else { - $ifClause = '\'else\''; - } - out += ' } '; - } - out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), -/* 480 */, -/* 481 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} -var astralLetterAndMarks = /\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf30-\udf40\udf42-\udf49\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48]|\ud804[\udc00-\udc46\udc7f-\udcba\udcd0-\udce8\udd00-\udd34\udd50-\udd73\udd76\udd80-\uddc4\uddda\ude00-\ude11\ude13-\ude37\udeb0-\udeea\udf01-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc80-\udcc5\udcc7\udd80-\uddb5\uddb8-\uddc0\ude00-\ude40\ude44\ude80-\udeb7]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud808[\udc00-\udf98]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud83a[\udc00-\udcc4\udcd0-\udcd6]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef]/; -var _default = astralLetterAndMarks; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 482 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -var fails = __webpack_require__(971); - -module.exports = function (method, arg) { - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call - arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); - }); -}; - - -/***/ }), -/* 483 */, -/* 484 */, -/* 485 */, -/* 486 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __webpack_require__(317); - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * Active `debug` instances. - */ - createDebug.instances = []; - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return match; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = createDebug.enabled(namespace); - debug.useColors = createDebug.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - debug.extend = extend; - // Debug.formatArgs = formatArgs; - // debug.rawLog = rawLog; - - // env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - createDebug.instances.push(debug); - - return debug; - } - - function destroy() { - const index = createDebug.instances.indexOf(this); - if (index !== -1) { - createDebug.instances.splice(index, 1); - return true; - } - return false; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - - createDebug.names = []; - createDebug.skips = []; - - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } - - for (i = 0; i < createDebug.instances.length; i++) { - const instance = createDebug.instances[i]; - instance.enabled = createDebug.enabled(instance.namespace); - } - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - - let i; - let len; - - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } - - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } - - return false; - } - - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; - - -/***/ }), -/* 487 */, -/* 488 */, -/* 489 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = __webpack_require__(357); -var Stream = __webpack_require__(413).Stream; -var util = __webpack_require__(669); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); - - -/***/ }), -/* 490 */, -/* 491 */, -/* 492 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__(855); - -var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; -var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31]; -var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i; -var HOSTNAME = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i; -var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; -var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; -// uri-template: https://tools.ietf.org/html/rfc6570 -var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; -// For the source: https://gist.github.com/dperini/729294 -// For test cases: https://mathiasbynens.be/demo/url-regex -// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; -var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; -var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; -var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; - - -module.exports = formats; - -function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - return util.copy(formats[mode]); -} - - -formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, - 'uri-template': URITEMPLATE, - url: URL, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - 'uri-reference': URIREF, - 'uri-template': URITEMPLATE, - url: URL, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: HOSTNAME, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -function isLeapYear(year) { - // https://tools.ietf.org/html/rfc3339#appendix-C - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -} - - -function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var year = +matches[1]; - var month = +matches[2]; - var day = +matches[3]; - - return month >= 1 && month <= 12 && day >= 1 && - day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); -} - - -function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return ((hour <= 23 && minute <= 59 && second <= 59) || - (hour == 23 && minute == 59 && second == 60)) && - (!full || timeZone); -} - - -var DATE_TIME_SEPARATOR = /t|\s/i; -function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); -} - - -var NOT_URI_FRAGMENT = /\/|:/; -function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); -} - - -var Z_ANCHOR = /[^\\]\\Z/; -function regex(str) { - if (Z_ANCHOR.test(str)) return false; - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } -} - - -/***/ }), -/* 493 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -var $export = __webpack_require__(195); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !__webpack_require__(843), 'Object', { defineProperty: __webpack_require__(973).f }); - - -/***/ }), -/* 494 */, -/* 495 */, -/* 496 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var ruleModules = __webpack_require__(894) - , toHash = __webpack_require__(855).toHash; - -module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ { 'maximum': ['exclusiveMaximum'] }, - { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', - { 'properties': ['additionalProperties', 'patternProperties'] } ] }, - { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] } - ]; - - var ALL = [ 'type', '$comment' ]; - var KEYWORDS = [ - '$schema', '$id', 'id', '$data', '$async', 'title', - 'description', 'default', 'definitions', - 'examples', 'readOnly', 'writeOnly', - 'contentMediaType', 'contentEncoding', - 'additionalItems', 'then', 'else' - ]; - var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - RULES.all = toHash(ALL); - RULES.types = toHash(TYPES); - - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - var implKeywords; - if (typeof keyword == 'object') { - var key = Object.keys(keyword)[0]; - implKeywords = keyword[key]; - keyword = key; - implKeywords.forEach(function (k) { - ALL.push(k); - RULES.all[k] = true; - }); - } - ALL.push(keyword); - var rule = RULES.all[keyword] = { - keyword: keyword, - code: ruleModules[keyword], - implements: implKeywords - }; - return rule; - }); - - RULES.all.$comment = { - keyword: '$comment', - code: ruleModules.$comment - }; - - if (group.type) RULES.types[group.type] = group; - }); - - RULES.keywords = toHash(ALL.concat(KEYWORDS)); - RULES.custom = {}; - - return RULES; -}; - - -/***/ }), -/* 497 */, -/* 498 */, -/* 499 */, -/* 500 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = Key; - -var assert = __webpack_require__(489); -var algs = __webpack_require__(603); -var crypto = __webpack_require__(417); -var Fingerprint = __webpack_require__(400); -var Signature = __webpack_require__(575); -var DiffieHellman = __webpack_require__(290).DiffieHellman; -var errs = __webpack_require__(570); -var utils = __webpack_require__(270); -var PrivateKey = __webpack_require__(502); -var edCompat; - -try { - edCompat = __webpack_require__(363); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; - -var formats = {}; -formats['auto'] = __webpack_require__(241); -formats['pem'] = __webpack_require__(268); -formats['pkcs1'] = __webpack_require__(508); -formats['pkcs8'] = __webpack_require__(435); -formats['rfc4253'] = __webpack_require__(538); -formats['ssh'] = __webpack_require__(854); -formats['ssh-private'] = __webpack_require__(862); -formats['openssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(982); -formats['putty'] = __webpack_require__(624); -formats['ppk'] = formats['putty']; - -function Key(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - assert.optionalString(opts.comment, 'options.comment'); - - var algInfo = algs.info[opts.type]; - if (typeof (algInfo) !== 'object') - throw (new InvalidAlgorithmError(opts.type)); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.parts = opts.parts; - this.part = partLookup; - this.comment = undefined; - this.source = opts.source; - - /* for speeding up hashing/fingerprint operations */ - this._rfc4253Cache = opts._rfc4253Cache; - this._hashCache = {}; - - var sz; - this.curve = undefined; - if (this.type === 'ecdsa') { - var curve = this.part.curve.data.toString(); - this.curve = curve; - sz = algs.curves[curve].size; - } else if (this.type === 'ed25519' || this.type === 'curve25519') { - sz = 256; - this.curve = 'curve25519'; - } else { - var szPart = this.part[algInfo.sizePart]; - sz = szPart.data.length; - sz = sz * 8 - utils.countZeros(szPart.data); - } - this.size = sz; -} - -Key.formats = formats; - -Key.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'ssh'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - if (format === 'rfc4253') { - if (this._rfc4253Cache === undefined) - this._rfc4253Cache = formats['rfc4253'].write(this); - return (this._rfc4253Cache); - } - - return (formats[format].write(this, options)); -}; - -Key.prototype.toString = function (format, options) { - return (this.toBuffer(format, options).toString()); -}; - -Key.prototype.hash = function (algo, type) { - assert.string(algo, 'algorithm'); - assert.optionalString(type, 'type'); - if (type === undefined) - type = 'ssh'; - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - var cacheKey = algo + '||' + type; - if (this._hashCache[cacheKey]) - return (this._hashCache[cacheKey]); - - var buf; - if (type === 'ssh') { - buf = this.toBuffer('rfc4253'); - } else if (type === 'spki') { - buf = formats.pkcs8.pkcs8ToBuffer(this); - } else { - throw (new Error('Hash type ' + type + ' not supported')); - } - var hash = crypto.createHash(algo).update(buf).digest(); - this._hashCache[cacheKey] = hash; - return (hash); -}; - -Key.prototype.fingerprint = function (algo, type) { - if (algo === undefined) - algo = 'sha256'; - if (type === undefined) - type = 'ssh'; - assert.string(algo, 'algorithm'); - assert.string(type, 'type'); - var opts = { - type: 'key', - hash: this.hash(algo, type), - algorithm: algo, - hashType: type - }; - return (new Fingerprint(opts)); -}; - -Key.prototype.defaultHashAlgorithm = function () { - var hashAlgo = 'sha1'; - if (this.type === 'rsa') - hashAlgo = 'sha256'; - if (this.type === 'dsa' && this.size > 1024) - hashAlgo = 'sha256'; - if (this.type === 'ed25519') - hashAlgo = 'sha512'; - if (this.type === 'ecdsa') { - if (this.size <= 256) - hashAlgo = 'sha256'; - else if (this.size <= 384) - hashAlgo = 'sha384'; - else - hashAlgo = 'sha512'; - } - return (hashAlgo); -}; - -Key.prototype.createVerify = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Verifier(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldVerify = v.verify.bind(v); - var key = this.toBuffer('pkcs8'); - var curve = this.curve; - var self = this; - v.verify = function (signature, fmt) { - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== self.type) - return (false); - if (signature.hashAlgorithm && - signature.hashAlgorithm !== hashAlgo) - return (false); - if (signature.curve && self.type === 'ecdsa' && - signature.curve !== curve) - return (false); - return (oldVerify(key, signature.toBuffer('asn1'))); - - } else if (typeof (signature) === 'string' || - Buffer.isBuffer(signature)) { - return (oldVerify(key, signature, fmt)); - - /* - * Avoid doing this on valid arguments, walking the prototype - * chain can be quite slow. - */ - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - - } else { - throw (new TypeError('signature must be a string, ' + - 'Buffer, or Signature object')); - } - }; - return (v); -}; - -Key.prototype.createDiffieHellman = function () { - if (this.type === 'rsa') - throw (new Error('RSA keys do not support Diffie-Hellman')); - - return (new DiffieHellman(this)); -}; -Key.prototype.createDH = Key.prototype.createDiffieHellman; - -Key.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - if (k instanceof PrivateKey) - k = k.toPublic(); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -Key.isKey = function (obj, ver) { - return (utils.isCompatible(obj, Key, ver)); -}; - -/* - * API versions for Key: - * [1,0] -- initial ver, may take Signature for createVerify or may not - * [1,1] -- added pkcs1, pkcs8 formats - * [1,2] -- added auto, ssh-private, openssh formats - * [1,3] -- added defaultHashAlgorithm - * [1,4] -- added ed support, createDH - * [1,5] -- first explicitly tagged version - * [1,6] -- changed ed25519 part names - * [1,7] -- spki hash types - */ -Key.prototype._sshpkApiVersion = [1, 7]; - -Key._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - assert.func(obj.fingerprint); - if (obj.createDH) - return ([1, 4]); - if (obj.defaultHashAlgorithm) - return ([1, 3]); - if (obj.formats['auto']) - return ([1, 2]); - if (obj.formats['pkcs1']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 501 */, -/* 502 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = PrivateKey; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var crypto = __webpack_require__(417); -var Fingerprint = __webpack_require__(400); -var Signature = __webpack_require__(575); -var errs = __webpack_require__(570); -var util = __webpack_require__(669); -var utils = __webpack_require__(270); -var dhe = __webpack_require__(290); -var generateECDSA = dhe.generateECDSA; -var generateED25519 = dhe.generateED25519; -var edCompat = __webpack_require__(363); -var nacl = __webpack_require__(196); - -var Key = __webpack_require__(500); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; -var KeyEncryptedError = errs.KeyEncryptedError; - -var formats = {}; -formats['auto'] = __webpack_require__(241); -formats['pem'] = __webpack_require__(268); -formats['pkcs1'] = __webpack_require__(508); -formats['pkcs8'] = __webpack_require__(435); -formats['rfc4253'] = __webpack_require__(538); -formats['ssh-private'] = __webpack_require__(862); -formats['openssh'] = formats['ssh-private']; -formats['ssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(982); - -function PrivateKey(opts) { - assert.object(opts, 'options'); - Key.call(this, opts); - - this._pubCache = undefined; -} -util.inherits(PrivateKey, Key); - -PrivateKey.formats = formats; - -PrivateKey.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'pkcs1'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -PrivateKey.prototype.hash = function (algo, type) { - return (this.toPublic().hash(algo, type)); -}; - -PrivateKey.prototype.fingerprint = function (algo, type) { - return (this.toPublic().fingerprint(algo, type)); -}; - -PrivateKey.prototype.toPublic = function () { - if (this._pubCache) - return (this._pubCache); - - var algInfo = algs.info[this.type]; - var pubParts = []; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = algInfo.parts[i]; - pubParts.push(this.part[p]); - } - - this._pubCache = new Key({ - type: this.type, - source: this, - parts: pubParts - }); - if (this.comment) - this._pubCache.comment = this.comment; - return (this._pubCache); -}; - -PrivateKey.prototype.derive = function (newType) { - assert.string(newType, 'type'); - var priv, pub, pair; - - if (this.type === 'ed25519' && newType === 'curve25519') { - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'curve25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } else if (this.type === 'curve25519' && newType === 'ed25519') { - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'ed25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } - throw (new Error('Key derivation not supported from ' + this.type + - ' to ' + newType)); -}; - -PrivateKey.prototype.createVerify = function (hashAlgo) { - return (this.toPublic().createVerify(hashAlgo)); -}; - -PrivateKey.prototype.createSign = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Signer(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldSign = v.sign.bind(v); - var key = this.toBuffer('pkcs1'); - var type = this.type; - var curve = this.curve; - v.sign = function () { - var sig = oldSign(key); - if (typeof (sig) === 'string') - sig = Buffer.from(sig, 'binary'); - sig = Signature.parse(sig, type, 'asn1'); - sig.hashAlgorithm = hashAlgo; - sig.curve = curve; - return (sig); - }; - return (v); -}; - -PrivateKey.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - assert.ok(k instanceof PrivateKey, 'key is not a private key'); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -PrivateKey.isPrivateKey = function (obj, ver) { - return (utils.isCompatible(obj, PrivateKey, ver)); -}; - -PrivateKey.generate = function (type, options) { - if (options === undefined) - options = {}; - assert.object(options, 'options'); - - switch (type) { - case 'ecdsa': - if (options.curve === undefined) - options.curve = 'nistp256'; - assert.string(options.curve, 'options.curve'); - return (generateECDSA(options.curve)); - case 'ed25519': - return (generateED25519()); - default: - throw (new Error('Key generation not supported with key ' + - 'type "' + type + '"')); - } -}; - -/* - * API versions for PrivateKey: - * [1,0] -- initial ver - * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats - * [1,2] -- added defaultHashAlgorithm - * [1,3] -- added derive, ed, createDH - * [1,4] -- first tagged version - * [1,5] -- changed ed25519 part names and format - * [1,6] -- type arguments for hash() and fingerprint() - */ -PrivateKey.prototype._sshpkApiVersion = [1, 6]; - -PrivateKey._oldVersionDetect = function (obj) { - assert.func(obj.toPublic); - assert.func(obj.createSign); - if (obj.derive) - return ([1, 3]); - if (obj.defaultHashAlgorithm) - return ([1, 2]); - if (obj.formats['auto']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 503 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -module.exports = new Type('tag:yaml.org,2002:seq', { - kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } -}); - - -/***/ }), -/* 504 */ -/***/ (function(module) { - -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} - - -/***/ }), -/* 505 */, -/* 506 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = rng; - -var _crypto = _interopRequireDefault(__webpack_require__(417)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - -let poolPtr = rnds8Pool.length; - -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} - -/***/ }), -/* 507 */, -/* 508 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readPkcs1: readPkcs1, - write: write, - writePkcs1: writePkcs1 -}; - -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); - -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var pem = __webpack_require__(268); - -var pkcs8 = __webpack_require__(435); -var readECDSACurve = pkcs8.readECDSACurve; - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs1')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs1')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs1(alg, type, der) { - switch (alg) { - case 'RSA': - if (type === 'public') - return (readPkcs1RSAPublic(der)); - else if (type === 'private') - return (readPkcs1RSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'DSA': - if (type === 'public') - return (readPkcs1DSAPublic(der)); - else if (type === 'private') - return (readPkcs1DSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'EC': - case 'ECDSA': - if (type === 'private') - return (readPkcs1ECDSAPrivate(der)); - else if (type === 'public') - return (readPkcs1ECDSAPublic(der)); - throw (new Error('Unknown key type: ' + type)); - case 'EDDSA': - case 'EdDSA': - if (type === 'private') - return (readPkcs1EdDSAPrivate(der)); - throw (new Error(type + ' keys not supported with EdDSA')); - default: - throw (new Error('Unknown key algo: ' + alg)); - } -} - -function readPkcs1RSAPublic(der) { - // modulus and exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs1RSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version[0], 0); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 0); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - var y = readMPInt(der, 'y'); - var x = readMPInt(der, 'x'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1EdDSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 1); - - // private key - var k = der.readString(asn1.Ber.OctetString, true); - - der.readSequence(0xa0); - var oid = der.readOID(); - assert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier'); - - der.readSequence(0xa1); - var A = utils.readBitString(der); - - var key = { - type: 'ed25519', - parts: [ - { name: 'A', data: utils.zeroPadToLength(A, 32) }, - { name: 'k', data: k } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPublic(der) { - var y = readMPInt(der, 'y'); - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - var key = { - type: 'dsa', - parts: [ - { name: 'y', data: y }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPublic(der) { - der.readSequence(); - - var oid = der.readOID(); - assert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey'); - - var curveOid = der.readOID(); - - var curve; - var curves = Object.keys(algs.curves); - for (var j = 0; j < curves.length; ++j) { - var c = curves[j]; - var cd = algs.curves[c]; - if (cd.pkcs8oid === curveOid) { - curve = c; - break; - } - } - assert.string(curve, 'a known ECDSA named curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curve) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 1); - - // private key - var d = der.readString(asn1.Ber.OctetString, true); - - der.readSequence(0xa0); - var curve = readECDSACurve(der); - assert.string(curve, 'a known elliptic curve'); - - der.readSequence(0xa1); - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: Buffer.from(curve) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function writePkcs1(der, key) { - der.startSequence(); - - switch (key.type) { - case 'rsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1RSAPrivate(der, key); - else - writePkcs1RSAPublic(der, key); - break; - case 'dsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1DSAPrivate(der, key); - else - writePkcs1DSAPublic(der, key); - break; - case 'ecdsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1ECDSAPrivate(der, key); - else - writePkcs1ECDSAPublic(der, key); - break; - case 'ed25519': - if (PrivateKey.isPrivateKey(key)) - writePkcs1EdDSAPrivate(der, key); - else - writePkcs1EdDSAPublic(der, key); - break; - default: - throw (new Error('Unknown key algo: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs1RSAPublic(der, key) { - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); -} - -function writePkcs1RSAPrivate(der, key) { - var ver = Buffer.from([0]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPrivate(der, key) { - var ver = Buffer.from([0]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPublic(der, key) { - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); -} - -function writePkcs1ECDSAPublic(der, key) { - der.startSequence(); - - der.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */ - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs1ECDSAPrivate(der, key) { - var ver = Buffer.from([1]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa0); - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - der.endSequence(); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); -} - -function writePkcs1EdDSAPrivate(der, key) { - var ver = Buffer.from([1]); - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.k.data, asn1.Ber.OctetString); - - der.startSequence(0xa0); - der.writeOID('1.3.101.112'); - der.endSequence(); - - der.startSequence(0xa1); - utils.writeBitString(der, key.part.A.data); - der.endSequence(); -} - -function writePkcs1EdDSAPublic(der, key) { - throw (new Error('Public keys are not supported for EdDSA PKCS#1')); -} - - -/***/ }), -/* 509 */, -/* 510 */ -/***/ (function(module) { - -module.exports = addHook; - -function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - - if (kind === "before") { - hook = function (method, options) { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)); - }; - } - - if (kind === "after") { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; - } - - if (kind === "error") { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; - } - - state.registry[name].push({ - hook: hook, - orig: orig, - }); -} - - -/***/ }), -/* 511 */, -/* 512 */ -/***/ (function(module) { - -module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}; - -/***/ }), -/* 513 */, -/* 514 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var compileSchema = __webpack_require__(563) - , resolve = __webpack_require__(283) - , Cache = __webpack_require__(921) - , SchemaObject = __webpack_require__(955) - , stableStringify = __webpack_require__(741) - , formats = __webpack_require__(492) - , rules = __webpack_require__(496) - , $dataMetaSchema = __webpack_require__(628) - , util = __webpack_require__(855); - -module.exports = Ajv; - -Ajv.prototype.validate = validate; -Ajv.prototype.compile = compile; -Ajv.prototype.addSchema = addSchema; -Ajv.prototype.addMetaSchema = addMetaSchema; -Ajv.prototype.validateSchema = validateSchema; -Ajv.prototype.getSchema = getSchema; -Ajv.prototype.removeSchema = removeSchema; -Ajv.prototype.addFormat = addFormat; -Ajv.prototype.errorsText = errorsText; - -Ajv.prototype._addSchema = _addSchema; -Ajv.prototype._compile = _compile; - -Ajv.prototype.compileAsync = __webpack_require__(890); -var customKeyword = __webpack_require__(45); -Ajv.prototype.addKeyword = customKeyword.add; -Ajv.prototype.getKeyword = customKeyword.get; -Ajv.prototype.removeKeyword = customKeyword.remove; -Ajv.prototype.validateKeyword = customKeyword.validate; - -var errorClasses = __webpack_require__(580); -Ajv.ValidationError = errorClasses.Validation; -Ajv.MissingRefError = errorClasses.MissingRef; -Ajv.$dataMetaSchema = $dataMetaSchema; - -var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; - -var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ]; -var META_SUPPORT_DATA = ['/properties']; - -/** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ -function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - opts = this._opts = util.copy(opts) || {}; - setLogger(this); - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - this._getId = chooseGetId(opts); - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - if (opts.serialize === undefined) opts.serialize = stableStringify; - this._metaOpts = getMetaSchemaOptions(this); - - if (opts.formats) addInitialFormats(this); - if (opts.keywords) addInitialKeywords(this); - addDefaultMetaSchema(this); - if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); - if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}}); - addInitialSchemas(this); -} - - - -/** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. - * @this Ajv - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ -function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = this.getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = this._addSchema(schemaKeyRef); - v = schemaObj.validate || this._compile(schemaObj); - } - - var valid = v(data); - if (v.$async !== true) this.errors = v.errors; - return valid; -} - - -/** - * Create validating function for passed schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ -function compile(schema, _meta) { - var schemaObj = this._addSchema(schema, undefined, _meta); - return schemaObj.validate || this._compile(schemaObj); -} - - -/** - * Adds schema to the instance. - * @this Ajv - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - * @return {Ajv} this for method chaining - */ -function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ -function errorsText(errors, options) { - errors = errors || this.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} - -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { - [key]: options[key] - }); - } - }); - return result; -} - -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - - return obj; -} - -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); - } else { - options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates - - - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging - - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten - - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); - } - - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); - return mergedOptions; -} - -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - - if (names.length === 0) { - return url; - } - - return url + separator + names.map(name => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} - -const urlVariableRegex = /\{[^}]+\}/g; - -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} - -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - - if (!matches) { - return []; - } - - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} - -function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} - -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* istanbul ignore file */ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - - return part; - }).join(""); -} - -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} - -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} - -function isDefined(value) { - return value !== undefined && value !== null; -} - -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} - -function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); - - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - - return result; -} - -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} - -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - - if (operator && operator !== "+") { - var separator = ","; - - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); -} - -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible - - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later - - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); - } - - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - - - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } // default content-type for JSON if body is set - - - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - - - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } // Only return body/request keys if present - - - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); -} - -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} - -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); -} - -const VERSION = "7.0.2"; - -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. - -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "", - previews: [] - } -}; - -const endpoint = withDefaults(null, DEFAULTS); - -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 522 */ -/***/ (function(module) { - -module.exports = {"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}; - -/***/ }), -/* 523 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var register = __webpack_require__(280) -var addHook = __webpack_require__(510) -var removeHook = __webpack_require__(866) - -// bind with array of arguments: https://stackoverflow.com/a/21792913 -var bind = Function.bind -var bindable = bind.bind(bind) - -function bindApi (hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) - hook.api = { remove: removeHookRef } - hook.remove = removeHookRef - - ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind] - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) - }) -} - -function HookSingular () { - var singularHookName = 'h' - var singularHookState = { - registry: {} - } - var singularHook = register.bind(null, singularHookState, singularHookName) - bindApi(singularHook, singularHookState, singularHookName) - return singularHook -} - -function HookCollection () { - var state = { - registry: {} - } - - var hook = register.bind(null, state) - bindApi(hook, state) - - return hook -} - -var collectionHookDeprecationMessageDisplayed = false -function Hook () { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') - collectionHookDeprecationMessageDisplayed = true - } - return HookCollection() -} - -Hook.Singular = HookSingular.bind() -Hook.Collection = HookCollection.bind() - -module.exports = Hook -// expose constructors as a named property for TypeScript -module.exports.Hook = Hook -module.exports.Singular = Hook.Singular -module.exports.Collection = Hook.Collection - - -/***/ }), -/* 524 */, -/* 525 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports.default = _default; - -/***/ }), -/* 526 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -const { readFileSync } = __webpack_require__(747); -const { resolve, basename } = __webpack_require__(622); - -const { Octokit } = __webpack_require__(725); -const toolkit = __webpack_require__(470); - -const handlePullRequest = __webpack_require__(815); -const handlePush = __webpack_require__(555); -const parseTweetFileContent = __webpack_require__(746); -const tweet = __webpack_require__(713); - -const VERSION = __webpack_require__(731).version; - -console.log(`Running twitter-together version ${VERSION}`); - -async function main() { - const state = { - startedAt: new Date().toISOString(), - twitterCredentials: { - consumer_key: process.env.TWITTER_API_KEY, - consumer_secret: process.env.TWITTER_API_SECRET_KEY, - access_token_key: process.env.TWITTER_ACCESS_TOKEN, - access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET, - }, - }; - - // Allow for CLI invocation using `--file tweets/test.tweet` - if (process.argv.length > 2 && process.argv[2] === "--file") { - if (!process.argv[3]) throw new Error("No file specified for --file"); - const fileState = { - ...state, - dir: resolve(process.argv[3], "..", ".."), - }; - - const payload = readFileSync(resolve(process.argv[3]), "utf8"); - const parsed = parseTweetFileContent(payload, fileState.dir); - console.log("Parsed tweet:", parsed); - console.log(await tweet(fileState, parsed, basename(process.argv[3]))); - return; - } - - // If not given file flag, assume GitHub Action - const payload = JSON.parse( - readFileSync(process.env.GITHUB_EVENT_PATH, "utf8") - ); - const ref = process.env.GITHUB_REF; - const sha = process.env.GITHUB_SHA; - const dir = process.env.GITHUB_WORKSPACE; - const githubState = { - ...state, - toolkit, - octokit: new Octokit(), - payload, - ref, - sha, - dir, - }; - - switch (process.env.GITHUB_EVENT_NAME) { - case "push": - await handlePush(githubState); - break; - case "pull_request": - await handlePullRequest(githubState); - break; - } -} - -main().catch((error) => { - console.error(error); - process.exit(1); -}); - - -/***/ }), -/* 527 */, -/* 528 */, -/* 529 */, -/* 530 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var punycode = __webpack_require__(213); -var mappingTable = __webpack_require__(967); - -var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 -}; - -function normalize(str) { // fix bug in v8 - return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); -} - -function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; - - while (start <= end) { - var mid = Math.floor((start + end) / 2); - - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; - } - } - - return null; -} - -var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - -function countSymbols(string) { - return string - // replace every surrogate pair with a BMP symbol - .replace(regexAstralSymbols, '_') - // then get the length - .length; -} - -function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ""; - - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); - - switch (status[1]) { - case "disallowed": - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case "ignored": - break; - case "mapped": - processed += String.fromCodePoint.apply(String, status[2]); - break; - case "deviation": - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case "valid": - processed += String.fromCodePoint(codePoint); - break; - case "disallowed_STD3_mapped": - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case "disallowed_STD3_valid": - if (useSTD3) { - hasError = true; - } - - processed += String.fromCodePoint(codePoint); - break; - } - } - - return { - string: processed, - error: hasError - }; -} - -var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; - -function validateLabel(label, processing_option) { - if (label.substr(0, 4) === "xn--") { - label = punycode.toUnicode(label); - processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; - } - - var error = false; - - if (normalize(label) !== label || - (label[3] === "-" && label[4] === "-") || - label[0] === "-" || label[label.length - 1] === "-" || - label.indexOf(".") !== -1 || - label.search(combiningMarksRegex) === 0) { - error = true; - } - - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); - if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && - status[1] !== "valid" && status[1] !== "deviation")) { - error = true; - break; - } - } - - return { - label: label, - error: error - }; -} - -function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize(result.string); - - var labels = result.string.split("."); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch(e) { - result.error = true; - } - } - - return { - string: labels.join("."), - error: result.error - }; -} - -module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split("."); - labels = labels.map(function(l) { - try { - return punycode.toASCII(l); - } catch(e) { - result.error = true; - return l; - } - }); - - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join(".").length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } - - for (var i=0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; - break; - } - } - } - - if (result.error) return null; - return labels.join("."); -}; - -module.exports.toUnicode = function(domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); - - return { - domain: result.string, - error: result.error - }; -}; - -module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; - - -/***/ }), -/* 531 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validSubdomain = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/, { - validDomainChars: _validDomainChars["default"] -}); -var _default = validSubdomain; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 532 */, -/* 533 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _directionalMarkersGroup = _interopRequireDefault(__webpack_require__(449)); - -var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validUrlPrecedingChars = (0, _regexSupplant["default"])(/(?:[^A-Za-z0-9@@$###{invalidCharsGroup}]|[#{directionalMarkersGroup}]|^)/, { - invalidCharsGroup: _invalidCharsGroup["default"], - directionalMarkersGroup: _directionalMarkersGroup["default"] -}); -var _default = validUrlPrecedingChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 534 */, -/* 535 */, -/* 536 */, -/* 537 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -function promisify(fn) { - return function (req, opts) { - return new Promise((resolve, reject) => { - fn.call(this, req, opts, (err, rtn) => { - if (err) { - reject(err); - } - else { - resolve(rtn); - } - }); - }); - }; -} -exports.default = promisify; -//# sourceMappingURL=promisify.js.map - -/***/ }), -/* 538 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read.bind(undefined, false, undefined), - readType: read.bind(undefined, false), - write: write, - /* semi-private api, used by sshpk-agent */ - readPartial: read.bind(undefined, true), - - /* shared with ssh format */ - readInternal: read, - keyTypeToAlg: keyTypeToAlg, - algToKeyType: algToKeyType -}; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var SSHBuffer = __webpack_require__(940); - -function algToKeyType(alg) { - assert.string(alg); - if (alg === 'ssh-dss') - return ('dsa'); - else if (alg === 'ssh-rsa') - return ('rsa'); - else if (alg === 'ssh-ed25519') - return ('ed25519'); - else if (alg === 'ssh-curve25519') - return ('curve25519'); - else if (alg.match(/^ecdsa-sha2-/)) - return ('ecdsa'); - else - throw (new Error('Unknown algorithm ' + alg)); -} - -function keyTypeToAlg(key) { - assert.object(key); - if (key.type === 'dsa') - return ('ssh-dss'); - else if (key.type === 'rsa') - return ('ssh-rsa'); - else if (key.type === 'ed25519') - return ('ssh-ed25519'); - else if (key.type === 'curve25519') - return ('ssh-curve25519'); - else if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.part.curve.data.toString()); - else - throw (new Error('Unknown key type ' + key.type)); -} - -function read(partial, type, buf, options) { - if (typeof (buf) === 'string') - buf = Buffer.from(buf); - assert.buffer(buf, 'buf'); - - var key = {}; - - var parts = key.parts = []; - var sshbuf = new SSHBuffer({buffer: buf}); - - var alg = sshbuf.readString(); - assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); - - key.type = algToKeyType(alg); - - var partCount = algs.info[key.type].parts.length; - if (type && type === 'private') - partCount = algs.privInfo[key.type].parts.length; - - while (!sshbuf.atEnd() && parts.length < partCount) - parts.push(sshbuf.readPart()); - while (!partial && !sshbuf.atEnd()) - parts.push(sshbuf.readPart()); - - assert.ok(parts.length >= 1, - 'key must have at least one part'); - assert.ok(partial || sshbuf.atEnd(), - 'leftover bytes at end of key'); - - var Constructor = Key; - var algInfo = algs.info[key.type]; - if (type === 'private' || algInfo.parts.length !== parts.length) { - algInfo = algs.privInfo[key.type]; - Constructor = PrivateKey; - } - assert.strictEqual(algInfo.parts.length, parts.length); - - if (key.type === 'ecdsa') { - var res = /^ecdsa-sha2-(.+)$/.exec(alg); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - var normalized = true; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = parts[i]; - p.name = algInfo.parts[i]; - /* - * OpenSSH stores ed25519 "private" keys as seed + public key - * concat'd together (k followed by A). We want to keep them - * separate for other formats that don't do this. - */ - if (key.type === 'ed25519' && p.name === 'k') - p.data = p.data.slice(0, 32); - - if (p.name !== 'curve' && algInfo.normalize !== false) { - var nd; - if (key.type === 'ed25519') { - nd = utils.zeroPadToLength(p.data, 32); - } else { - nd = utils.mpNormalize(p.data); - } - if (nd.toString('binary') !== - p.data.toString('binary')) { - p.data = nd; - normalized = false; - } - } - } - - if (normalized) - key._rfc4253Cache = sshbuf.toBuffer(); - - if (partial && typeof (partial) === 'object') { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Constructor(key)); -} - -function write(key, options) { - assert.object(key); - - var alg = keyTypeToAlg(key); - var i; - - var algInfo = algs.info[key.type]; - if (PrivateKey.isPrivateKey(key)) - algInfo = algs.privInfo[key.type]; - var parts = algInfo.parts; - - var buf = new SSHBuffer({}); - - buf.writeString(alg); - - for (i = 0; i < parts.length; ++i) { - var data = key.part[parts[i]].data; - if (algInfo.normalize !== false) { - if (key.type === 'ed25519') - data = utils.zeroPadToLength(data, 32); - else - data = utils.mpNormalize(data); - } - if (key.type === 'ed25519' && parts[i] === 'k') - data = Buffer.concat([data, key.part.A.data]); - buf.writeBuffer(data); - } - - return (buf.toBuffer()); -} - - -/***/ }), -/* 539 */, -/* 540 */ -/***/ (function(module) { - -module.exports = {"name":"twitter","version":"1.7.1","description":"Twitter API client library for node.js","license":"MIT","keywords":["twitter","streaming","oauth"],"homepage":"https://github.com/desmondmorris/node-twitter","author":"Desmond Morris ","repository":{"type":"git","url":"https://github.com/desmondmorris/node-twitter"},"scripts":{"test":"npm run lint && mocha","lint":"./node_modules/.bin/eslint test/*.js lib/*.js"},"dependencies":{"deep-extend":"^0.5.0","request":"^2.72.0"},"devDependencies":{"eslint":"^3.12.0","mocha":"^3.2.0","nock":"^9.0.2"},"main":"./lib/twitter"}; - -/***/ }), -/* 541 */, -/* 542 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_pattern(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 543 */, -/* 544 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); - -var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__webpack_require__(787)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, json, options) { - // map JSON entity to twitter-text entity - if (json.user_mentions) { - for (var i = 0; i < json.user_mentions.length; i++) { - // this is a @mention - json.user_mentions[i].screenName = json.user_mentions[i].screen_name; - } - } - - if (json.hashtags) { - for (var i = 0; i < json.hashtags.length; i++) { - // this is a #hashtag - json.hashtags[i].hashtag = json.hashtags[i].text; - } - } - - if (json.symbols) { - for (var i = 0; i < json.symbols.length; i++) { - // this is a $CASH tag - json.symbols[i].cashtag = json.symbols[i].text; - } - } // concatenate all entities - - - var entities = []; - - for (var key in json) { - entities = entities.concat(json[key]); - } // modify indices to UTF-16 - - - (0, _modifyIndicesFromUnicodeToUTF["default"])(text, entities); - return (0, _autoLinkEntities["default"])(text, entities, options); -} - -module.exports = exports.default; - -/***/ }), -/* 545 */, -/* 546 */, -/* 547 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validPortNumber = /[0-9]+/; -var _default = validPortNumber; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 548 */, -/* 549 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - - -var anObject = __webpack_require__(990); -var toLength = __webpack_require__(853); -var advanceStringIndex = __webpack_require__(215); -var regExpExec = __webpack_require__(319); - -// @@match logic -__webpack_require__(35)('match', 1, function (defined, MATCH, $match, maybeCallNative) { - return [ - // `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[MATCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, - // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative($match, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - if (!rx.global) return regExpExec(rx, S); - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - return n === 0 ? null : A; - } - ]; -}); - - -/***/ }), -/* 550 */, -/* 551 */ -/***/ (function(module) { - -// Generated by CoffeeScript 1.12.2 -(function() { - var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime; - - if ((typeof performance !== "undefined" && performance !== null) && performance.now) { - module.exports = function() { - return performance.now(); - }; - } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) { - module.exports = function() { - return (getNanoSeconds() - nodeLoadTime) / 1e6; - }; - hrtime = process.hrtime; - getNanoSeconds = function() { - var hr; - hr = hrtime(); - return hr[0] * 1e9 + hr[1]; - }; - moduleLoadTime = getNanoSeconds(); - upTime = process.uptime() * 1e9; - nodeLoadTime = moduleLoadTime - upTime; - } else if (Date.now) { - module.exports = function() { - return Date.now() - loadTime; - }; - loadTime = Date.now(); - } else { - module.exports = function() { - return new Date().getTime() - loadTime; - }; - loadTime = new Date().getTime(); - } - -}).call(this); - -//# sourceMappingURL=performance-now.js.map - - -/***/ }), -/* 552 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var url = __webpack_require__(835) -var isUrl = /^https?:/ - -function Redirect (request) { - this.request = request - this.followRedirect = true - this.followRedirects = true - this.followAllRedirects = false - this.followOriginalHttpMethod = false - this.allowRedirect = function () { return true } - this.maxRedirects = 10 - this.redirects = [] - this.redirectsFollowed = 0 - this.removeRefererHeader = false -} - -Redirect.prototype.onRequest = function (options) { - var self = this - - if (options.maxRedirects !== undefined) { - self.maxRedirects = options.maxRedirects - } - if (typeof options.followRedirect === 'function') { - self.allowRedirect = options.followRedirect - } - if (options.followRedirect !== undefined) { - self.followRedirects = !!options.followRedirect - } - if (options.followAllRedirects !== undefined) { - self.followAllRedirects = options.followAllRedirects - } - if (self.followRedirects || self.followAllRedirects) { - self.redirects = self.redirects || [] - } - if (options.removeRefererHeader !== undefined) { - self.removeRefererHeader = options.removeRefererHeader - } - if (options.followOriginalHttpMethod !== undefined) { - self.followOriginalHttpMethod = options.followOriginalHttpMethod - } -} - -Redirect.prototype.redirectTo = function (response) { - var self = this - var request = self.request - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { - var location = response.caseless.get('location') - request.debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirects) { - switch (request.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode === 401) { - var authHeader = request._auth.onResponse(response) - if (authHeader) { - request.setHeader('authorization', authHeader) - redirectTo = request.uri - } - } - return redirectTo -} - -Redirect.prototype.onResponse = function (response) { - var self = this - var request = self.request - - var redirectTo = self.redirectTo(response) - if (!redirectTo || !self.allowRedirect.call(request, response)) { - return false - } - - request.debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - // response.resume should be defined, but check anyway before calling. Workaround for browserify. - if (response.resume) { - response.resume() - } - - if (self.redirectsFollowed >= self.maxRedirects) { - request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) - return false - } - self.redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(request.uri.href, redirectTo) - } - - var uriPrev = request.uri - request.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (request.uri.protocol !== uriPrev.protocol) { - delete request.agent - } - - self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo }) - - if (self.followAllRedirects && request.method !== 'HEAD' && - response.statusCode !== 401 && response.statusCode !== 307) { - request.method = self.followOriginalHttpMethod ? request.method : 'GET' - } - // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete request.src - delete request.req - delete request._started - if (response.statusCode !== 401 && response.statusCode !== 307) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete request.body - delete request._form - if (request.headers) { - request.removeHeader('host') - request.removeHeader('content-type') - request.removeHeader('content-length') - if (request.uri.hostname !== request.originalHost.split(':')[0]) { - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of curl: - // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 - request.removeHeader('authorization') - } - } - } - - if (!self.removeRefererHeader) { - request.setHeader('referer', uriPrev.href) - } - - request.emit('redirect') - - request.init() - - return true -} - -exports.Redirect = Redirect - - -/***/ }), -/* 553 */, -/* 554 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; -class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BasicCredentialHandler = BasicCredentialHandler; -class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BearerCredentialHandler = BearerCredentialHandler; -class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; -//# sourceMappingURL=auth.js.map - -/***/ }), -/* 555 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = handlePush; - -const { inspect } = __webpack_require__(669); - -const addComment = __webpack_require__(591); -const getNewTweets = __webpack_require__(629); -const isSetupDone = __webpack_require__(269); -const setup = __webpack_require__(802); -const tweet = __webpack_require__(713); - -const parseTweetFileContent = __webpack_require__(746); - -async function handlePush(state) { - const { toolkit, octokit, payload, ref } = state; - - // ignore builds from tags - if (!ref.startsWith("refs/heads/")) { - toolkit.info(`GITHUB_REF is not a branch: ${ref}`); - return; - } - - // ignore builds from branches other than the repository’s defaul branch - const defaultBranch = payload.repository.default_branch; - const branch = process.env.GITHUB_REF.substr("refs/heads/".length); - if (branch !== defaultBranch) { - toolkit.info(`"${branch}" is not the default branch`); - return; - } - - // on request errors, log the requset options and error, then end process - octokit.hook.error("request", (error, options) => { - if (options.request.expectStatus === error.status) { - throw error; - } - - toolkit.info(error); - toolkit.setFailed(error.stack); - process.exit(); - }); - - // make sure repository is already setup - if (!(await isSetupDone())) { - toolkit.info("tweets/ folder does not yet exist. Starting setup"); - return setup(state); - } - - // find tweets - const newTweets = await getNewTweets(state); - if (newTweets.length === 0) { - toolkit.info("No new tweets"); - return; - } - - // post all the tweets - const tweetUrls = []; - const tweetErrors = []; - for (let i = 0; i < newTweets.length; i++) { - try { - const parsed = parseTweetFileContent(newTweets[i].text, state.dir); - - toolkit.info(`Tweeting: ${parsed.text}`); - if (parsed.poll) { - toolkit.info( - `Tweet has poll with ${ - parsed.poll.length - } options: ${parsed.poll.join(", ")}` - ); - } - - let result = await tweet(state, parsed, newTweets[i].filename); - while (result) { - toolkit.info(`tweeted: ${result.url}`); - tweetUrls.push(result.url); - result = result.thread; - } - } catch (error) { - console.log(`error`); - console.log(error[0] || error); - tweetErrors.push(error[0] || error); - } - } - - if (tweetUrls.length) { - await addComment(state, "Tweeted:\n\n- " + tweetUrls.join("\n- ")); - } - - if (tweetErrors.length) { - tweetErrors.forEach((error) => toolkit.error(inspect(error))); - await addComment( - state, - "Errors:\n\n- " + tweetErrors.map((error) => error.message).join("\n- ") - ); - return toolkit.setFailed("Error tweeting"); - } -} - - -/***/ }), -/* 556 */, -/* 557 */ -/***/ (function(module) { - -"use strict"; -function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 561 */, -/* 562 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -// Copyright Twitter Inc. Licensed under MIT -// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md - -// This file is auto-generated -exports.default = /(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; - -/***/ }), -/* 563 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var resolve = __webpack_require__(283) - , util = __webpack_require__(855) - , errorClasses = __webpack_require__(580) - , stableStringify = __webpack_require__(741); - -var validateGenerator = __webpack_require__(212); - -/** - * Functions below are used inside compiled validations function - */ - -var ucs2length = util.ucs2length; -var equal = __webpack_require__(264); - -// this error is thrown by async schemas to return validation errors via exception -var ValidationError = errorClasses.Validation; - -module.exports = compile; - - -/** - * Compiles schema to validation function - * @this Ajv - * @param {Object} schema schema object - * @param {Object} root object with information about the root schema for this schema - * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution - * @param {String} baseId base ID for IDs in the schema - * @return {Function} validation function - */ -function compile(schema, root, localRefs, baseId) { - /* jshint validthis: true, evil: true */ - /* eslint no-shadow: 0 */ - var self = this - , opts = this._opts - , refVal = [ undefined ] - , refs = {} - , patterns = [] - , patternsHash = {} - , defaults = [] - , defaultsHash = {} - , customRules = []; - - root = root || { schema: schema, refVal: refVal, refs: refs }; - - var c = checkCompiling.call(this, schema, root, baseId); - var compilation = this._compilations[c.index]; - if (c.compiling) return (compilation.callValidate = callValidate); - - var formats = this._formats; - var RULES = this.RULES; - - try { - var v = localCompile(schema, root, localRefs, baseId); - compilation.validate = v; - var cv = compilation.callValidate; - if (cv) { - cv.schema = v.schema; - cv.errors = null; - cv.refs = v.refs; - cv.refVal = v.refVal; - cv.root = v.root; - cv.$async = v.$async; - if (opts.sourceCode) cv.source = v.source; - } - return v; - } finally { - endCompiling.call(this, schema, root, baseId); - } - - /* @this {*} - custom context, see passContext option */ - function callValidate() { - /* jshint validthis: true */ - var validate = compilation.validate; - var result = validate.apply(this, arguments); - callValidate.errors = validate.errors; - return result; - } - - function localCompile(_schema, _root, localRefs, baseId) { - var isRoot = !_root || (_root && _root.schema == _schema); - if (_root.schema != root.schema) - return compile.call(self, _schema, _root, localRefs, baseId); - - var $async = _schema.$async === true; - - var sourceCode = validateGenerator({ - isTop: true, - schema: _schema, - isRoot: isRoot, - baseId: baseId, - root: _root, - schemaPath: '', - errSchemaPath: '#', - errorPath: '""', - MissingRefError: errorClasses.MissingRef, - RULES: RULES, - validate: validateGenerator, - util: util, - resolve: resolve, - resolveRef: resolveRef, - usePattern: usePattern, - useDefault: useDefault, - useCustomRule: useCustomRule, - opts: opts, - formats: formats, - logger: self.logger, - self: self - }); - - sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) - + vars(defaults, defaultCode) + vars(customRules, customRuleCode) - + sourceCode; - - if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); - // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); - var validate; - try { - var makeValidate = new Function( - 'self', - 'RULES', - 'formats', - 'root', - 'refVal', - 'defaults', - 'customRules', - 'equal', - 'ucs2length', - 'ValidationError', - sourceCode - ); - - validate = makeValidate( - self, - RULES, - formats, - root, - refVal, - defaults, - customRules, - equal, - ucs2length, - ValidationError - ); - - refVal[0] = validate; - } catch(e) { - self.logger.error('Error compiling schema, function code:', sourceCode); - throw e; - } - - validate.schema = _schema; - validate.errors = null; - validate.refs = refs; - validate.refVal = refVal; - validate.root = isRoot ? validate : _root; - if ($async) validate.$async = true; - if (opts.sourceCode === true) { - validate.source = { - code: sourceCode, - patterns: patterns, - defaults: defaults - }; - } - - return validate; - } - - function resolveRef(baseId, ref, isRoot) { - ref = resolve.url(baseId, ref); - var refIndex = refs[ref]; - var _refVal, refCode; - if (refIndex !== undefined) { - _refVal = refVal[refIndex]; - refCode = 'refVal[' + refIndex + ']'; - return resolvedRef(_refVal, refCode); - } - if (!isRoot && root.refs) { - var rootRefId = root.refs[ref]; - if (rootRefId !== undefined) { - _refVal = root.refVal[rootRefId]; - refCode = addLocalRef(ref, _refVal); - return resolvedRef(_refVal, refCode); - } - } - - refCode = addLocalRef(ref); - var v = resolve.call(self, localCompile, root, ref); - if (v === undefined) { - var localSchema = localRefs && localRefs[ref]; - if (localSchema) { - v = resolve.inlineRef(localSchema, opts.inlineRefs) - ? localSchema - : compile.call(self, localSchema, root, localRefs, baseId); - } - } - - if (v === undefined) { - removeLocalRef(ref); - } else { - replaceLocalRef(ref, v); - return resolvedRef(v, refCode); - } - } - - function addLocalRef(ref, v) { - var refId = refVal.length; - refVal[refId] = v; - refs[ref] = refId; - return 'refVal' + refId; - } - - function removeLocalRef(ref) { - delete refs[ref]; - } - - function replaceLocalRef(ref, v) { - var refId = refs[ref]; - refVal[refId] = v; - } - - function resolvedRef(refVal, code) { - return typeof refVal == 'object' || typeof refVal == 'boolean' - ? { code: code, schema: refVal, inline: true } - : { code: code, $async: refVal && !!refVal.$async }; - } - - function usePattern(regexStr) { - var index = patternsHash[regexStr]; - if (index === undefined) { - index = patternsHash[regexStr] = patterns.length; - patterns[index] = regexStr; - } - return 'pattern' + index; - } - - function useDefault(value) { - switch (typeof value) { - case 'boolean': - case 'number': - return '' + value; - case 'string': - return util.toQuotedString(value); - case 'object': - if (value === null) return 'null'; - var valueStr = stableStringify(value); - var index = defaultsHash[valueStr]; - if (index === undefined) { - index = defaultsHash[valueStr] = defaults.length; - defaults[index] = value; - } - return 'default' + index; - } - } - - function useCustomRule(rule, schema, parentSchema, it) { - if (self._opts.validateSchema !== false) { - var deps = rule.definition.dependencies; - if (deps && !deps.every(function(keyword) { - return Object.prototype.hasOwnProperty.call(parentSchema, keyword); - })) - throw new Error('parent schema must have all required keywords: ' + deps.join(',')); - - var validateSchema = rule.definition.validateSchema; - if (validateSchema) { - var valid = validateSchema(schema); - if (!valid) { - var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); - if (self._opts.validateSchema == 'log') self.logger.error(message); - else throw new Error(message); - } - } - } - - var compile = rule.definition.compile - , inline = rule.definition.inline - , macro = rule.definition.macro; - - var validate; - if (compile) { - validate = compile.call(self, schema, parentSchema, it); - } else if (macro) { - validate = macro.call(self, schema, parentSchema, it); - if (opts.validateSchema !== false) self.validateSchema(validate, true); - } else if (inline) { - validate = inline.call(self, it, rule.keyword, schema, parentSchema); - } else { - validate = rule.definition.validate; - if (!validate) return; - } - - if (validate === undefined) - throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); - - var index = customRules.length; - customRules[index] = validate; - - return { - code: 'customRule' + index, - validate: validate - }; - } -} - - -/** - * Checks if the schema is currently compiled - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) - */ -function checkCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var index = compIndex.call(this, schema, root, baseId); - if (index >= 0) return { index: index, compiling: true }; - index = this._compilations.length; - this._compilations[index] = { - schema: schema, - root: root, - baseId: baseId - }; - return { index: index, compiling: false }; -} - - -/** - * Removes the schema from the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - */ -function endCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var i = compIndex.call(this, schema, root, baseId); - if (i >= 0) this._compilations.splice(i, 1); -} - - -/** - * Index of schema compilation in the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Integer} compilation index - */ -function compIndex(schema, root, baseId) { - /* jshint validthis: true */ - for (var i=0; i 20 && r[0] === 0x00) - r = r.slice(1); - s = this.part.s.data; - if (s.length > 20 && s[0] === 0x00) - s = s.slice(1); - if ((this.hashAlgorithm && - this.hashAlgorithm !== 'sha1') || - r.length + s.length !== 40) { - throw (new Error('OpenSSH only supports ' + - 'DSA signatures with SHA1 hash')); - } - buf.writeBuffer(Buffer.concat([r, s])); - return (buf.toBuffer()); - } else if (format === 'ssh' && this.type === 'ecdsa') { - var inner = new SSHBuffer({}); - r = this.part.r.data; - inner.writeBuffer(r); - inner.writePart(this.part.s); - - buf = new SSHBuffer({}); - /* XXX: find a more proper way to do this? */ - var curve; - if (r[0] === 0x00) - r = r.slice(1); - var sz = r.length * 8; - if (sz === 256) - curve = 'nistp256'; - else if (sz === 384) - curve = 'nistp384'; - else if (sz === 528) - curve = 'nistp521'; - buf.writeString('ecdsa-sha2-' + curve); - buf.writeBuffer(inner.toBuffer()); - return (buf.toBuffer()); - } - throw (new Error('Invalid signature format')); - default: - throw (new Error('Invalid signature data')); - } -}; - -Signature.prototype.toString = function (format) { - assert.optionalString(format, 'format'); - return (this.toBuffer(format).toString('base64')); -}; - -Signature.parse = function (data, type, format) { - if (typeof (data) === 'string') - data = Buffer.from(data, 'base64'); - assert.buffer(data, 'data'); - assert.string(format, 'format'); - assert.string(type, 'type'); - - var opts = {}; - opts.type = type.toLowerCase(); - opts.parts = []; - - try { - assert.ok(data.length > 0, 'signature must not be empty'); - switch (opts.type) { - case 'rsa': - return (parseOneNum(data, type, format, opts)); - case 'ed25519': - return (parseOneNum(data, type, format, opts)); - - case 'dsa': - case 'ecdsa': - if (format === 'asn1') - return (parseDSAasn1(data, type, format, opts)); - else if (opts.type === 'dsa') - return (parseDSA(data, type, format, opts)); - else - return (parseECDSA(data, type, format, opts)); - - default: - throw (new InvalidAlgorithmError(type)); - } - - } catch (e) { - if (e instanceof InvalidAlgorithmError) - throw (e); - throw (new SignatureParseError(type, format, e)); - } -}; - -function parseOneNum(data, type, format, opts) { - if (format === 'ssh') { - try { - var buf = new SSHBuffer({buffer: data}); - var head = buf.readString(); - } catch (e) { - /* fall through */ - } - if (buf !== undefined) { - var msg = 'SSH signature does not match expected ' + - 'type (expected ' + type + ', got ' + head + ')'; - switch (head) { - case 'ssh-rsa': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha1'; - break; - case 'rsa-sha2-256': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha256'; - break; - case 'rsa-sha2-512': - assert.strictEqual(type, 'rsa', msg); - opts.hashAlgo = 'sha512'; - break; - case 'ssh-ed25519': - assert.strictEqual(type, 'ed25519', msg); - opts.hashAlgo = 'sha512'; - break; - default: - throw (new Error('Unknown SSH signature ' + - 'type: ' + head)); - } - var sig = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - sig.name = 'sig'; - opts.parts.push(sig); - return (new Signature(opts)); - } - } - opts.parts.push({name: 'sig', data: data}); - return (new Signature(opts)); -} - -function parseDSAasn1(data, type, format, opts) { - var der = new asn1.BerReader(data); - der.readSequence(); - var r = der.readString(asn1.Ber.Integer, true); - var s = der.readString(asn1.Ber.Integer, true); - - opts.parts.push({name: 'r', data: utils.mpNormalize(r)}); - opts.parts.push({name: 's', data: utils.mpNormalize(s)}); - - return (new Signature(opts)); -} - -function parseDSA(data, type, format, opts) { - if (data.length != 40) { - var buf = new SSHBuffer({buffer: data}); - var d = buf.readBuffer(); - if (d.toString('ascii') === 'ssh-dss') - d = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - assert.strictEqual(d.length, 40, 'invalid inner length'); - data = d; - } - opts.parts.push({name: 'r', data: data.slice(0, 20)}); - opts.parts.push({name: 's', data: data.slice(20, 40)}); - return (new Signature(opts)); -} - -function parseECDSA(data, type, format, opts) { - var buf = new SSHBuffer({buffer: data}); - - var r, s; - var inner = buf.readBuffer(); - var stype = inner.toString('ascii'); - if (stype.slice(0, 6) === 'ecdsa-') { - var parts = stype.split('-'); - assert.strictEqual(parts[0], 'ecdsa'); - assert.strictEqual(parts[1], 'sha2'); - opts.curve = parts[2]; - switch (opts.curve) { - case 'nistp256': - opts.hashAlgo = 'sha256'; - break; - case 'nistp384': - opts.hashAlgo = 'sha384'; - break; - case 'nistp521': - opts.hashAlgo = 'sha512'; - break; - default: - throw (new Error('Unsupported ECDSA curve: ' + - opts.curve)); - } - inner = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes on outer'); - buf = new SSHBuffer({buffer: inner}); - r = buf.readPart(); - } else { - r = {data: inner}; - } - - s = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - - r.name = 'r'; - s.name = 's'; - - opts.parts.push(r); - opts.parts.push(s); - return (new Signature(opts)); -} - -Signature.isSignature = function (obj, ver) { - return (utils.isCompatible(obj, Signature, ver)); -}; - -/* - * API versions for Signature: - * [1,0] -- initial ver - * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent - * hashAlgorithm property - * [2,1] -- first tagged version - */ -Signature.prototype._sshpkApiVersion = [2, 1]; - -Signature._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - if (obj.hasOwnProperty('hashAlgorithm')) - return ([2, 0]); - return ([1, 0]); -}; - - -/***/ }), -/* 576 */, -/* 577 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// call something on iterator step with safe closing on error -var anObject = __webpack_require__(990); -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } -}; - - -/***/ }), -/* 578 */ -/***/ (function(module) { - -module.exports = {"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}; - -/***/ }), -/* 579 */, -/* 580 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var resolve = __webpack_require__(283); - -module.exports = { - Validation: errorSubclass(ValidationError), - MissingRef: errorSubclass(MissingRefError) -}; - - -function ValidationError(errors) { - this.message = 'validation failed'; - this.errors = errors; - this.ajv = this.validation = true; -} - - -MissingRefError.message = function (baseId, ref) { - return 'can\'t resolve reference ' + ref + ' from id ' + baseId; -}; - - -function MissingRefError(baseId, ref, message) { - this.message = message || MissingRefError.message(baseId, ref); - this.missingRef = resolve.url(baseId, ref); - this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); -} - - -function errorSubclass(Subclass) { - Subclass.prototype = Object.create(Error.prototype); - Subclass.prototype.constructor = Subclass; - return Subclass; -} - - -/***/ }), -/* 581 */ -/***/ (function(module) { - -"use strict"; - - -var has = Object.prototype.hasOwnProperty; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - var obj; - - while (queue.length) { - var item = queue.pop(); - obj = item.obj[item.prop]; - - if (Array.isArray(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } - - return obj; -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } else if (typeof target === 'object') { - if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (Array.isArray(target) && !Array.isArray(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (Array.isArray(target) && Array.isArray(source)) { - source.forEach(function (item, i) { - if (has.call(target, i)) { - if (target[i] && typeof target[i] === 'object') { - target[i] = merge(target[i], item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -var encode = function encode(str) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = typeof str === 'string' ? str : String(str); - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - return compactQueue(queue); -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (obj === null || typeof obj === 'undefined') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -module.exports = { - arrayToObject: arrayToObject, - assign: assign, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - merge: merge -}; - - -/***/ }), -/* 582 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(o) { - var r = {}; - - for (var k in o) { - if (o.hasOwnProperty(k)) { - r[k] = o[k]; - } - } - - return r; -} - -module.exports = exports.default; - -/***/ }), -/* 583 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); - -var _tagAttrs = _interopRequireDefault(__webpack_require__(181)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, attributes, options) { - if (!options.suppressNoFollow) { - attributes.rel = 'nofollow'; - } // if linkAttributeBlock is specified, call it to modify the attributes - - - if (options.linkAttributeBlock) { - options.linkAttributeBlock(entity, attributes); - } // if linkTextBlock is specified, call it to get a new/modified link text - - - if (options.linkTextBlock) { - text = options.linkTextBlock(entity, text); - } - - var d = { - text: text, - attr: (0, _tagAttrs["default"])(attributes) - }; - return (0, _stringSupplant["default"])('#{text}', d); -} - -module.exports = exports.default; - -/***/ }), -/* 584 */ -/***/ (function(module) { - -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function (msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; - - -/***/ }), -/* 585 */, -/* 586 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var endpoint = __webpack_require__(475); -var universalUserAgent = __webpack_require__(796); -var isPlainObject = __webpack_require__(356); -var nodeFetch = _interopDefault(__webpack_require__(454)); -var requestError = __webpack_require__(463); - -const VERSION = "6.2.1"; - -function getBufferResponse(response) { - return response.arrayBuffer(); -} - -function fetchWrapper(requestOptions) { - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - - let headers = {}; - let status; - let url; - const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || - /* istanbul ignore next */ - nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, // `requestOptions.request.agent` type is incompatible - // see https://github.com/octokit/types.ts/pull/264 - requestOptions.request)).then(async response => { - url = response.url; - status = response.status; - - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - - if ("deprecation" in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); - } - - if (status === 204 || status === 205) { - return; - } // GitHub API returns 200 for HEAD requests - - - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - - throw new requestError.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: undefined - }, - request: requestOptions - }); - } - - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - - if (status >= 400) { - const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - - return getResponseData(response); - }).then(data => { - return { - status, - url, - headers, - data - }; - }).catch(error => { - if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; - throw new requestError.RequestError(error.message, 500, { - request: requestOptions - }); - }); -} - -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - - if (/application\/json/.test(contentType)) { - return response.json(); - } - - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - - return getBufferResponse(response); -} - -function toErrorMessage(data) { - if (typeof data === "string") return data; // istanbul ignore else - just in case - - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; - } - - return data.message; - } // istanbul ignore next - just in case - - - return `Unknown error: ${JSON.stringify(data)}`; -} - -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; - - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); -} - -const request = withDefaults(endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } -}); - -exports.request = request; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 587 */, -/* 588 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var ITERATOR = __webpack_require__(621)('iterator'); -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - riter['return'] = function () { SAFE_CLOSING = true; }; - // eslint-disable-next-line no-throw-literal - Array.from(riter, function () { throw 2; }); -} catch (e) { /* empty */ } - -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - try { - var arr = [7]; - var iter = arr[ITERATOR](); - iter.next = function () { return { done: safe = true }; }; - arr[ITERATOR] = function () { return iter; }; - exec(arr); - } catch (e) { /* empty */ } - return safe; -}; - - -/***/ }), -/* 589 */, -/* 590 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -__webpack_require__(752); -var anObject = __webpack_require__(990); -var $flags = __webpack_require__(788); -var DESCRIPTORS = __webpack_require__(843); -var TO_STRING = 'toString'; -var $toString = /./[TO_STRING]; - -var define = function (fn) { - __webpack_require__(976)(RegExp.prototype, TO_STRING, fn, true); -}; - -// 21.2.5.14 RegExp.prototype.toString() -if (__webpack_require__(971)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { - define(function toString() { - var R = anObject(this); - return '/'.concat(R.source, '/', - 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); - }); -// FF44- RegExp#toString has a wrong name -} else if ($toString.name != TO_STRING) { - define(function toString() { - return $toString.call(this); - }); -} - - -/***/ }), -/* 591 */ -/***/ (function(module) { - -module.exports = addComment; - -function addComment({ octokit, payload }, body) { - // add comment with tweet URLs - // https://developer.github.com/v3/repos/comments/#create-a-commit-comment - return octokit.request("POST /repos/:owner/:repo/commits/:sha/comments", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - sha: payload.head_commit.id, - body, - }); -} - - -/***/ }), -/* 592 */, -/* 593 */, -/* 594 */, -/* 595 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var isObject = __webpack_require__(956); -var setPrototypeOf = __webpack_require__(820).set; -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); - } return that; -}; - - -/***/ }), -/* 596 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = { - read: read, - verify: verify, - sign: sign, - signAsync: signAsync, - write: write, - - /* Internal private API */ - fromBuffer: fromBuffer, - toBuffer: toBuffer -}; - -var assert = __webpack_require__(489); -var SSHBuffer = __webpack_require__(940); -var crypto = __webpack_require__(417); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var Identity = __webpack_require__(378); -var rfc4253 = __webpack_require__(538); -var Signature = __webpack_require__(575); -var utils = __webpack_require__(270); -var Certificate = __webpack_require__(202); - -function verify(cert, key) { - /* - * We always give an issuerKey, so if our verify() is being called then - * there was no signature. Return false. - */ - return (false); -} - -var TYPES = { - 'user': 1, - 'host': 2 -}; -Object.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; }); - -var ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/; - -function read(buf, options) { - if (Buffer.isBuffer(buf)) - buf = buf.toString('ascii'); - var parts = buf.trim().split(/[ \t\n]+/g); - if (parts.length < 2 || parts.length > 3) - throw (new Error('Not a valid SSH certificate line')); - - var algo = parts[0]; - var data = parts[1]; - - data = Buffer.from(data, 'base64'); - return (fromBuffer(data, algo)); -} - -function fromBuffer(data, algo, partial) { - var sshbuf = new SSHBuffer({ buffer: data }); - var innerAlgo = sshbuf.readString(); - if (algo !== undefined && innerAlgo !== algo) - throw (new Error('SSH certificate algorithm mismatch')); - if (algo === undefined) - algo = innerAlgo; - - var cert = {}; - cert.signatures = {}; - cert.signatures.openssh = {}; - - cert.signatures.openssh.nonce = sshbuf.readBuffer(); - - var key = {}; - var parts = (key.parts = []); - key.type = getAlg(algo); - - var partCount = algs.info[key.type].parts.length; - while (parts.length < partCount) - parts.push(sshbuf.readPart()); - assert.ok(parts.length >= 1, 'key must have at least one part'); - - var algInfo = algs.info[key.type]; - if (key.type === 'ecdsa') { - var res = ECDSA_ALGO.exec(algo); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - for (var i = 0; i < algInfo.parts.length; ++i) { - parts[i].name = algInfo.parts[i]; - if (parts[i].name !== 'curve' && - algInfo.normalize !== false) { - var p = parts[i]; - p.data = utils.mpNormalize(p.data); - } - } - - cert.subjectKey = new Key(key); - - cert.serial = sshbuf.readInt64(); - - var type = TYPES[sshbuf.readInt()]; - assert.string(type, 'valid cert type'); - - cert.signatures.openssh.keyId = sshbuf.readString(); - - var principals = []; - var pbuf = sshbuf.readBuffer(); - var psshbuf = new SSHBuffer({ buffer: pbuf }); - while (!psshbuf.atEnd()) - principals.push(psshbuf.readString()); - if (principals.length === 0) - principals = ['*']; - - cert.subjects = principals.map(function (pr) { - if (type === 'user') - return (Identity.forUser(pr)); - else if (type === 'host') - return (Identity.forHost(pr)); - throw (new Error('Unknown identity type ' + type)); - }); - - cert.validFrom = int64ToDate(sshbuf.readInt64()); - cert.validUntil = int64ToDate(sshbuf.readInt64()); - - var exts = []; - var extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); - var ext; - while (!extbuf.atEnd()) { - ext = { critical: true }; - ext.name = extbuf.readString(); - ext.data = extbuf.readBuffer(); - exts.push(ext); - } - extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); - while (!extbuf.atEnd()) { - ext = { critical: false }; - ext.name = extbuf.readString(); - ext.data = extbuf.readBuffer(); - exts.push(ext); - } - cert.signatures.openssh.exts = exts; - - /* reserved */ - sshbuf.readBuffer(); - - var signingKeyBuf = sshbuf.readBuffer(); - cert.issuerKey = rfc4253.read(signingKeyBuf); - - /* - * OpenSSH certs don't give the identity of the issuer, just their - * public key. So, we use an Identity that matches anything. The - * isSignedBy() function will later tell you if the key matches. - */ - cert.issuer = Identity.forHost('**'); - - var sigBuf = sshbuf.readBuffer(); - cert.signatures.openssh.signature = - Signature.parse(sigBuf, cert.issuerKey.type, 'ssh'); - - if (partial !== undefined) { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Certificate(cert)); -} - -function int64ToDate(buf) { - var i = buf.readUInt32BE(0) * 4294967296; - i += buf.readUInt32BE(4); - var d = new Date(); - d.setTime(i * 1000); - d.sourceInt64 = buf; - return (d); -} - -function dateToInt64(date) { - if (date.sourceInt64 !== undefined) - return (date.sourceInt64); - var i = Math.round(date.getTime() / 1000); - var upper = Math.floor(i / 4294967296); - var lower = Math.floor(i % 4294967296); - var buf = Buffer.alloc(8); - buf.writeUInt32BE(upper, 0); - buf.writeUInt32BE(lower, 4); - return (buf); -} - -function sign(cert, key) { - if (cert.signatures.openssh === undefined) - cert.signatures.openssh = {}; - try { - var blob = toBuffer(cert, true); - } catch (e) { - delete (cert.signatures.openssh); - return (false); - } - var sig = cert.signatures.openssh; - var hashAlgo = undefined; - if (key.type === 'rsa' || key.type === 'dsa') - hashAlgo = 'sha1'; - var signer = key.createSign(hashAlgo); - signer.write(blob); - sig.signature = signer.sign(); - return (true); -} - -function signAsync(cert, signer, done) { - if (cert.signatures.openssh === undefined) - cert.signatures.openssh = {}; - try { - var blob = toBuffer(cert, true); - } catch (e) { - delete (cert.signatures.openssh); - done(e); - return; - } - var sig = cert.signatures.openssh; - - signer(blob, function (err, signature) { - if (err) { - done(err); - return; - } - try { - /* - * This will throw if the signature isn't of a - * type/algo that can be used for SSH. - */ - signature.toBuffer('ssh'); - } catch (e) { - done(e); - return; - } - sig.signature = signature; - done(); - }); -} - -function write(cert, options) { - if (options === undefined) - options = {}; - - var blob = toBuffer(cert); - var out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64'); - if (options.comment) - out = out + ' ' + options.comment; - return (out); -} - - -function toBuffer(cert, noSig) { - assert.object(cert.signatures.openssh, 'signature for openssh format'); - var sig = cert.signatures.openssh; - - if (sig.nonce === undefined) - sig.nonce = crypto.randomBytes(16); - var buf = new SSHBuffer({}); - buf.writeString(getCertType(cert.subjectKey)); - buf.writeBuffer(sig.nonce); - - var key = cert.subjectKey; - var algInfo = algs.info[key.type]; - algInfo.parts.forEach(function (part) { - buf.writePart(key.part[part]); - }); - - buf.writeInt64(cert.serial); - - var type = cert.subjects[0].type; - assert.notStrictEqual(type, 'unknown'); - cert.subjects.forEach(function (id) { - assert.strictEqual(id.type, type); - }); - type = TYPES[type]; - buf.writeInt(type); - - if (sig.keyId === undefined) { - sig.keyId = cert.subjects[0].type + '_' + - (cert.subjects[0].uid || cert.subjects[0].hostname); - } - buf.writeString(sig.keyId); - - var sub = new SSHBuffer({}); - cert.subjects.forEach(function (id) { - if (type === TYPES.host) - sub.writeString(id.hostname); - else if (type === TYPES.user) - sub.writeString(id.uid); - }); - buf.writeBuffer(sub.toBuffer()); - - buf.writeInt64(dateToInt64(cert.validFrom)); - buf.writeInt64(dateToInt64(cert.validUntil)); - - var exts = sig.exts; - if (exts === undefined) - exts = []; - - var extbuf = new SSHBuffer({}); - exts.forEach(function (ext) { - if (ext.critical !== true) - return; - extbuf.writeString(ext.name); - extbuf.writeBuffer(ext.data); - }); - buf.writeBuffer(extbuf.toBuffer()); - - extbuf = new SSHBuffer({}); - exts.forEach(function (ext) { - if (ext.critical === true) - return; - extbuf.writeString(ext.name); - extbuf.writeBuffer(ext.data); - }); - buf.writeBuffer(extbuf.toBuffer()); - - /* reserved */ - buf.writeBuffer(Buffer.alloc(0)); - - sub = rfc4253.write(cert.issuerKey); - buf.writeBuffer(sub); - - if (!noSig) - buf.writeBuffer(sig.signature.toBuffer('ssh')); - - return (buf.toBuffer()); -} - -function getAlg(certType) { - if (certType === 'ssh-rsa-cert-v01@openssh.com') - return ('rsa'); - if (certType === 'ssh-dss-cert-v01@openssh.com') - return ('dsa'); - if (certType.match(ECDSA_ALGO)) - return ('ecdsa'); - if (certType === 'ssh-ed25519-cert-v01@openssh.com') - return ('ed25519'); - throw (new Error('Unsupported cert type ' + certType)); -} - -function getCertType(key) { - if (key.type === 'rsa') - return ('ssh-rsa-cert-v01@openssh.com'); - if (key.type === 'dsa') - return ('ssh-dss-cert-v01@openssh.com'); - if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com'); - if (key.type === 'ed25519') - return ('ssh-ed25519-cert-v01@openssh.com'); - throw (new Error('Unsupported key type ' + key.type)); -} - - -/***/ }), -/* 597 */, -/* 598 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var isObject = __webpack_require__(956); -var document = __webpack_require__(300).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 599 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(195); -var $reduce = __webpack_require__(12); - -$export($export.P + $export.F * !__webpack_require__(482)([].reduce, true), 'Array', { - // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) - reduce: function reduce(callbackfn /* , initialValue */) { - return $reduce(this, callbackfn, arguments.length, arguments[1], false); - } -}); - - -/***/ }), -/* 600 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDecOctet = /(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9]{2})|(?:2[0-4][0-9])|(?:25[0-5]))/i; -var _default = validateUrlDecOctet; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 601 */, -/* 602 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -var tough = __webpack_require__(892) - -var Cookie = tough.Cookie -var CookieJar = tough.CookieJar - -exports.parse = function (str) { - if (str && str.uri) { - str = str.uri - } - if (typeof str !== 'string') { - throw new Error('The cookie function only accepts STRING as param') - } - return Cookie.parse(str, {loose: true}) -} - -// Adapt the sometimes-Async api of tough.CookieJar to our requirements -function RequestJar (store) { - var self = this - self._jar = new CookieJar(store, {looseMode: true}) -} -RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) { - var self = this - return self._jar.setCookieSync(cookieOrStr, uri, options || {}) -} -RequestJar.prototype.getCookieString = function (uri) { - var self = this - return self._jar.getCookieStringSync(uri) -} -RequestJar.prototype.getCookies = function (uri) { - var self = this - return self._jar.getCookiesSync(uri) -} - -exports.jar = function (store) { - return new RequestJar(store) -} - - -/***/ }), -/* 603 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -var Buffer = __webpack_require__(726).Buffer; - -var algInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y'], - sizePart: 'p' - }, - 'rsa': { - parts: ['e', 'n'], - sizePart: 'n' - }, - 'ecdsa': { - parts: ['curve', 'Q'], - sizePart: 'Q' - }, - 'ed25519': { - parts: ['A'], - sizePart: 'A' - } -}; -algInfo['curve25519'] = algInfo['ed25519']; - -var algPrivInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y', 'x'] - }, - 'rsa': { - parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] - }, - 'ecdsa': { - parts: ['curve', 'Q', 'd'] - }, - 'ed25519': { - parts: ['A', 'k'] - } -}; -algPrivInfo['curve25519'] = algPrivInfo['ed25519']; - -var hashAlgs = { - 'md5': true, - 'sha1': true, - 'sha256': true, - 'sha384': true, - 'sha512': true -}; - -/* - * Taken from - * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf - */ -var curves = { - 'nistp256': { - size: 256, - pkcs8oid: '1.2.840.10045.3.1.7', - p: Buffer.from(('00' + - 'ffffffff 00000001 00000000 00000000' + - '00000000 ffffffff ffffffff ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF 00000001 00000000 00000000' + - '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + - '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'c49d3608 86e70493 6a6678e1 139d26b7' + - '819f7e90'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff 00000000 ffffffff ffffffff' + - 'bce6faad a7179e84 f3b9cac2 fc632551'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + - '77037d81 2deb33a0 f4a13945 d898c296' + - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + - '2bce3357 6b315ece cbb64068 37bf51f5'). - replace(/ /g, ''), 'hex') - }, - 'nistp384': { - size: 384, - pkcs8oid: '1.3.132.0.34', - p: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffe' + - 'ffffffff 00000000 00000000 ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + - 'FFFFFFFF 00000000 00000000 FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - 'b3312fa7 e23ee7e4 988e056b e3f82d19' + - '181d9c6e fe814112 0314088f 5013875a' + - 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'a335926a a319a27a 1d00896a 6773a482' + - '7acdac73'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff c7634d81 f4372ddf' + - '581a0db2 48b0a77a ecec196a ccc52973'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - 'aa87ca22 be8b0537 8eb1c71e f320ad74' + - '6e1d3b62 8ba79b98 59f741e0 82542a38' + - '5502f25d bf55296c 3a545e38 72760ab7' + - '3617de4a 96262c6f 5d9e98bf 9292dc29' + - 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). - replace(/ /g, ''), 'hex') - }, - 'nistp521': { - size: 521, - pkcs8oid: '1.3.132.0.35', - p: Buffer.from(( - '01ffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffff').replace(/ /g, ''), 'hex'), - a: Buffer.from(('01FF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(('51' + - '953eb961 8e1c9a1f 929a21a0 b68540ee' + - 'a2da725b 99b315f3 b8b48991 8ef109e1' + - '56193951 ec7e937b 1652c0bd 3bb1bf07' + - '3573df88 3d2c34f1 ef451fd4 6b503f00'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'd09e8800 291cb853 96cc6717 393284aa' + - 'a0da64ba').replace(/ /g, ''), 'hex'), - n: Buffer.from(('01ff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffa' + - '51868783 bf2f966b 7fcc0148 f709a5d0' + - '3bb5c9b8 899c47ae bb6fb71e 91386409'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + - '9c648139 053fb521 f828af60 6b4d3dba' + - 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + - '3348b3c1 856a429b f97e7e31 c2e5bd66' + - '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + - '98f54449 579b4468 17afbd17 273e662c' + - '97ee7299 5ef42640 c550b901 3fad0761' + - '353c7086 a272c240 88be9476 9fd16650'). - replace(/ /g, ''), 'hex') - } -}; - -module.exports = { - info: algInfo, - privInfo: algPrivInfo, - hashAlgs: hashAlgs, - curves: curves -}; - - -/***/ }), -/* 604 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - - -var isRegExp = __webpack_require__(694); -var anObject = __webpack_require__(990); -var speciesConstructor = __webpack_require__(438); -var advanceStringIndex = __webpack_require__(215); -var toLength = __webpack_require__(853); -var callRegExpExec = __webpack_require__(319); -var regexpExec = __webpack_require__(663); -var fails = __webpack_require__(971); -var $min = Math.min; -var $push = [].push; -var $SPLIT = 'split'; -var LENGTH = 'length'; -var LAST_INDEX = 'lastIndex'; -var MAX_UINT32 = 0xffffffff; - -// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError -var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); - -// @@split logic -__webpack_require__(35)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { - var internalSplit; - if ( - 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || - 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || - 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || - '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || - '.'[$SPLIT](/()()/)[LENGTH] > 1 || - ''[$SPLIT](/.?/)[LENGTH] - ) { - // based on es5-shim implementation, need to rework it - internalSplit = function (separator, limit) { - var string = String(this); - if (separator === undefined && limit === 0) return []; - // If `separator` is not a regex, use native split - if (!isRegExp(separator)) return $split.call(string, separator, limit); - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + - (separator.multiline ? 'm' : '') + - (separator.unicode ? 'u' : '') + - (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; - var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; - // Make `global` and avoid `lastIndex` issues by working with a copy - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var match, lastIndex, lastLength; - while (match = regexpExec.call(separatorCopy, string)) { - lastIndex = separatorCopy[LAST_INDEX]; - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); - lastLength = match[0][LENGTH]; - lastLastIndex = lastIndex; - if (output[LENGTH] >= splitLimit) break; - } - if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop - } - if (lastLastIndex === string[LENGTH]) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; - }; - // Chakra, V8 - } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { - internalSplit = function (separator, limit) { - return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); - }; - } else { - internalSplit = $split; - } - - return [ - // `String.prototype.split` method - // https://tc39.github.io/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = defined(this); - var splitter = separator == undefined ? undefined : separator[SPLIT]; - return splitter !== undefined - ? splitter.call(separator, O, limit) - : internalSplit.call(String(O), separator, limit); - }, - // `RegExp.prototype[@@split]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (regexp, limit) { - var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var C = speciesConstructor(rx, RegExp); - - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + - (rx.multiline ? 'm' : '') + - (rx.unicode ? 'u' : '') + - (SUPPORTS_Y ? 'y' : 'g'); - - // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - while (q < S.length) { - splitter.lastIndex = SUPPORTS_Y ? q : 0; - var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); - var e; - if ( - z === null || - (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p - ) { - q = advanceStringIndex(S, q, unicodeMatching); - } else { - A.push(S.slice(p, q)); - if (A.length === lim) return A; - for (var i = 1; i <= z.length - 1; i++) { - A.push(z[i]); - if (A.length === lim) return A; - } - q = p = e; - } - } - A.push(S.slice(p)); - return A; - } - ]; -}); - - -/***/ }), -/* 605 */ -/***/ (function(module) { - -module.exports = require("http"); - -/***/ }), -/* 606 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _extractEntitiesWithIndices = _interopRequireDefault(__webpack_require__(458)); - -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractEntitiesWithIndices["default"])(text, { - extractUrlsWithoutProtocol: false - }); - return (0, _autoLinkEntities["default"])(text, entities, options); -} - -module.exports = exports.default; - -/***/ }), -/* 607 */, -/* 608 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var urlsOnly = []; - var urlsWithIndices = (0, _extractUrlsWithIndices["default"])(text, options); - - for (var i = 0; i < urlsWithIndices.length; i++) { - urlsOnly.push(urlsWithIndices[i].url); - } - - return urlsOnly; -} - -module.exports = exports.default; - -/***/ }), -/* 609 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var dP = __webpack_require__(973); -var createDesc = __webpack_require__(690); -module.exports = __webpack_require__(843) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 610 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -var ctx = __webpack_require__(743); -var $export = __webpack_require__(195); -var toObject = __webpack_require__(230); -var call = __webpack_require__(577); -var isArrayIter = __webpack_require__(993); -var toLength = __webpack_require__(853); -var createProperty = __webpack_require__(393); -var getIterFn = __webpack_require__(474); - -$export($export.S + $export.F * !__webpack_require__(588)(function (iter) { Array.from(iter); }), 'Array', { - // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) - from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - // if object isn't iterable or it's array with default iterator - use simple case - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - result.length = index; - return result; - } -}); - - -/***/ }), -/* 611 */, -/* 612 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlDomain = _interopRequireDefault(__webpack_require__(985)); - -var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlDomain}' + ')', { - validateUrlIp: _validateUrlIp["default"], - validateUrlDomain: _validateUrlDomain["default"] -}, 'i'); -var _default = validateUrlHost; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 613 */, -/* 614 */ -/***/ (function(module) { - -module.exports = require("events"); - -/***/ }), -/* 615 */, -/* 616 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _hashSigns = _interopRequireDefault(__webpack_require__(617)); - -var _hashtagAlpha = _interopRequireDefault(__webpack_require__(62)); - -var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); - -var _hashtagBoundary = _interopRequireDefault(__webpack_require__(38)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validHashtag = (0, _regexSupplant["default"])(/(#{hashtagBoundary})(#{hashSigns})(?!\uFE0F|\u20E3)(#{hashtagAlphaNumeric}*#{hashtagAlpha}#{hashtagAlphaNumeric}*)/gi, { - hashtagBoundary: _hashtagBoundary["default"], - hashSigns: _hashSigns["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], - hashtagAlpha: _hashtagAlpha["default"] -}); -var _default = validHashtag; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 617 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashSigns = /[##]/; -var _default = hashSigns; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 618 */, -/* 619 */, -/* 620 */, -/* 621 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var store = __webpack_require__(881)('wks'); -var uid = __webpack_require__(750); -var Symbol = __webpack_require__(300).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 622 */ -/***/ (function(module) { - -module.exports = require("path"); - -/***/ }), -/* 623 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -module.exports = { - afterRequest: __webpack_require__(672), - beforeRequest: __webpack_require__(318), - browser: __webpack_require__(222), - cache: __webpack_require__(901), - content: __webpack_require__(411), - cookie: __webpack_require__(326), - creator: __webpack_require__(776), - entry: __webpack_require__(96), - har: __webpack_require__(385), - header: __webpack_require__(841), - log: __webpack_require__(465), - page: __webpack_require__(744), - pageTimings: __webpack_require__(679), - postData: __webpack_require__(740), - query: __webpack_require__(335), - request: __webpack_require__(133), - response: __webpack_require__(226), - timings: __webpack_require__(758) -} - - -/***/ }), -/* 624 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2018 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var rfc4253 = __webpack_require__(538); -var Key = __webpack_require__(500); - -var errors = __webpack_require__(570); - -function read(buf, options) { - var lines = buf.toString('ascii').split(/[\r\n]+/); - var found = false; - var parts; - var si = 0; - while (si < lines.length) { - parts = splitHeader(lines[si++]); - if (parts && - parts[0].toLowerCase() === 'putty-user-key-file-2') { - found = true; - break; - } - } - if (!found) { - throw (new Error('No PuTTY format first line found')); - } - var alg = parts[1]; - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'encryption'); - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'comment'); - var comment = parts[1]; - - parts = splitHeader(lines[si++]); - assert.equal(parts[0].toLowerCase(), 'public-lines'); - var publicLines = parseInt(parts[1], 10); - if (!isFinite(publicLines) || publicLines < 0 || - publicLines > lines.length) { - throw (new Error('Invalid public-lines count')); - } - - var publicBuf = Buffer.from( - lines.slice(si, si + publicLines).join(''), 'base64'); - var keyType = rfc4253.algToKeyType(alg); - var key = rfc4253.read(publicBuf); - if (key.type !== keyType) { - throw (new Error('Outer key algorithm mismatch')); - } - key.comment = comment; - return (key); -} - -function splitHeader(line) { - var idx = line.indexOf(':'); - if (idx === -1) - return (null); - var header = line.slice(0, idx); - ++idx; - while (line[idx] === ' ') - ++idx; - var rest = line.slice(idx); - return ([header, rest]); -} - -function write(key, options) { - assert.object(key); - if (!Key.isKey(key)) - throw (new Error('Must be a public key')); - - var alg = rfc4253.keyTypeToAlg(key); - var buf = rfc4253.write(key); - var comment = key.comment || ''; - - var b64 = buf.toString('base64'); - var lines = wrap(b64, 64); - - lines.unshift('Public-Lines: ' + lines.length); - lines.unshift('Comment: ' + comment); - lines.unshift('Encryption: none'); - lines.unshift('PuTTY-User-Key-File-2: ' + alg); - - return (Buffer.from(lines.join('\n') + '\n')); -} - -function wrap(txt, len) { - var lines = []; - var pos = 0; - while (pos < txt.length) { - lines.push(txt.slice(pos, pos + 64)); - pos += 64; - } - return (lines); -} - - -/***/ }), -/* 625 */, -/* 626 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnreserved = /[a-z\u0400-\u04FF0-9\-._~]/i; -var _default = validateUrlUnreserved; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 627 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/*jshint unused:false */ - -function Store() { -} -exports.Store = Store; - -// Stores may be synchronous, but are still required to use a -// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync" -// API that converts from synchronous-callbacks to imperative style. -Store.prototype.synchronous = false; - -Store.prototype.findCookie = function(domain, path, key, cb) { - throw new Error('findCookie is not implemented'); -}; - -Store.prototype.findCookies = function(domain, path, cb) { - throw new Error('findCookies is not implemented'); -}; - -Store.prototype.putCookie = function(cookie, cb) { - throw new Error('putCookie is not implemented'); -}; - -Store.prototype.updateCookie = function(oldCookie, newCookie, cb) { - // recommended default implementation: - // return this.putCookie(newCookie, cb); - throw new Error('updateCookie is not implemented'); -}; - -Store.prototype.removeCookie = function(domain, path, key, cb) { - throw new Error('removeCookie is not implemented'); -}; - -Store.prototype.removeCookies = function(domain, path, cb) { - throw new Error('removeCookies is not implemented'); -}; - -Store.prototype.getAllCookies = function(cb) { - throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)'); -}; - - -/***/ }), -/* 628 */ -/***/ (function(module) { - -"use strict"; - - -var KEYWORDS = [ - 'multipleOf', - 'maximum', - 'exclusiveMaximum', - 'minimum', - 'exclusiveMinimum', - 'maxLength', - 'minLength', - 'pattern', - 'additionalItems', - 'maxItems', - 'minItems', - 'uniqueItems', - 'maxProperties', - 'minProperties', - 'required', - 'additionalProperties', - 'enum', - 'format', - 'const' -]; - -module.exports = function (metaSchema, keywordsJsonPointers) { - for (var i=0; i - file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) - ) - .map((file) => { - const text = readFileSync( - resolvePath(process.env.GITHUB_WORKSPACE, file.filename), - "utf8" - ).trim(); - return { - text, - filename: file.filename, - }; - }); -} - - -/***/ }), -/* 630 */, -/* 631 */ -/***/ (function(module) { - -module.exports = require("net"); - -/***/ }), -/* 632 */ -/***/ (function(__unusedmodule, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 633 */, -/* 634 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _regex = _interopRequireDefault(__webpack_require__(525)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} - -var _default = validate; -exports.default = _default; - -/***/ }), -/* 635 */, -/* 636 */, -/* 637 */, -/* 638 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var endpoint = __webpack_require__(521); -var universalUserAgent = __webpack_require__(796); -var isPlainObject = __webpack_require__(356); -var nodeFetch = _interopDefault(__webpack_require__(454)); -var requestError = __webpack_require__(463); - -const VERSION = "6.2.1"; - -function getBufferResponse(response) { - return response.arrayBuffer(); -} - -function fetchWrapper(requestOptions) { - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - - let headers = {}; - let status; - let url; - const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || - /* istanbul ignore next */ - nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, // `requestOptions.request.agent` type is incompatible - // see https://github.com/octokit/types.ts/pull/264 - requestOptions.request)).then(async response => { - url = response.url; - status = response.status; - - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - - if ("deprecation" in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); - } - - if (status === 204 || status === 205) { - return; - } // GitHub API returns 200 for HEAD requests - - - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - - throw new requestError.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: undefined - }, - request: requestOptions - }); - } - - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - - if (status >= 400) { - const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - - return getResponseData(response); - }).then(data => { - return { - status, - url, - headers, - data - }; - }).catch(error => { - if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; - throw new requestError.RequestError(error.message, 500, { - request: requestOptions - }); - }); -} - -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - - if (/application\/json/.test(contentType)) { - return response.json(); - } - - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - - return getBufferResponse(response); -} - -function toErrorMessage(data) { - if (typeof data === "string") return data; // istanbul ignore else - just in case - - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; - } - - return data.message; - } // istanbul ignore next - just in case - - - return `Unknown error: ${JSON.stringify(data)}`; -} - -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } - - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; - - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; - - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); -} - -const request = withDefaults(endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } -}); - -exports.request = request; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 639 */, -/* 640 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -/* - * verror.js: richer JavaScript errors - */ - -var mod_assertplus = __webpack_require__(489); -var mod_util = __webpack_require__(669); - -var mod_extsprintf = __webpack_require__(697); -var mod_isError = __webpack_require__(286).isError; -var sprintf = mod_extsprintf.sprintf; - -/* - * Public interface - */ - -/* So you can 'var VError = require('verror')' */ -module.exports = VError; -/* For compatibility */ -VError.VError = VError; -/* Other exported classes */ -VError.SError = SError; -VError.WError = WError; -VError.MultiError = MultiError; - -/* - * Common function used to parse constructor arguments for VError, WError, and - * SError. Named arguments to this function: - * - * strict force strict interpretation of sprintf arguments, even - * if the options in "argv" don't say so - * - * argv error's constructor arguments, which are to be - * interpreted as described in README.md. For quick - * reference, "argv" has one of the following forms: - * - * [ sprintf_args... ] (argv[0] is a string) - * [ cause, sprintf_args... ] (argv[0] is an Error) - * [ options, sprintf_args... ] (argv[0] is an object) - * - * This function normalizes these forms, producing an object with the following - * properties: - * - * options equivalent to "options" in third form. This will never - * be a direct reference to what the caller passed in - * (i.e., it may be a shallow copy), so it can be freely - * modified. - * - * shortmessage result of sprintf(sprintf_args), taking options.strict - * into account as described in README.md. - */ -function parseConstructorArguments(args) -{ - var argv, options, sprintf_args, shortmessage, k; - - mod_assertplus.object(args, 'args'); - mod_assertplus.bool(args.strict, 'args.strict'); - mod_assertplus.array(args.argv, 'args.argv'); - argv = args.argv; - - /* - * First, figure out which form of invocation we've been given. - */ - if (argv.length === 0) { - options = {}; - sprintf_args = []; - } else if (mod_isError(argv[0])) { - options = { 'cause': argv[0] }; - sprintf_args = argv.slice(1); - } else if (typeof (argv[0]) === 'object') { - options = {}; - for (k in argv[0]) { - options[k] = argv[0][k]; - } - sprintf_args = argv.slice(1); - } else { - mod_assertplus.string(argv[0], - 'first argument to VError, SError, or WError ' + - 'constructor must be a string, object, or Error'); - options = {}; - sprintf_args = argv; - } - - /* - * Now construct the error's message. - * - * extsprintf (which we invoke here with our caller's arguments in order - * to construct this Error's message) is strict in its interpretation of - * values to be processed by the "%s" specifier. The value passed to - * extsprintf must actually be a string or something convertible to a - * String using .toString(). Passing other values (notably "null" and - * "undefined") is considered a programmer error. The assumption is - * that if you actually want to print the string "null" or "undefined", - * then that's easy to do that when you're calling extsprintf; on the - * other hand, if you did NOT want that (i.e., there's actually a bug - * where the program assumes some variable is non-null and tries to - * print it, which might happen when constructing a packet or file in - * some specific format), then it's better to stop immediately than - * produce bogus output. - * - * However, sometimes the bug is only in the code calling VError, and a - * programmer might prefer to have the error message contain "null" or - * "undefined" rather than have the bug in the error path crash the - * program (making the first bug harder to identify). For that reason, - * by default VError converts "null" or "undefined" arguments to their - * string representations and passes those to extsprintf. Programmers - * desiring the strict behavior can use the SError class or pass the - * "strict" option to the VError constructor. - */ - mod_assertplus.object(options); - if (!options.strict && !args.strict) { - sprintf_args = sprintf_args.map(function (a) { - return (a === null ? 'null' : - a === undefined ? 'undefined' : a); - }); - } - - if (sprintf_args.length === 0) { - shortmessage = ''; - } else { - shortmessage = sprintf.apply(null, sprintf_args); - } - - return ({ - 'options': options, - 'shortmessage': shortmessage - }); -} - -/* - * See README.md for reference documentation. - */ -function VError() -{ - var args, obj, parsed, cause, ctor, message, k; - - args = Array.prototype.slice.call(arguments, 0); - - /* - * This is a regrettable pattern, but JavaScript's built-in Error class - * is defined to work this way, so we allow the constructor to be called - * without "new". - */ - if (!(this instanceof VError)) { - obj = Object.create(VError.prototype); - VError.apply(obj, arguments); - return (obj); - } - - /* - * For convenience and backwards compatibility, we support several - * different calling forms. Normalize them here. - */ - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': false - }); - - /* - * If we've been given a name, apply it now. - */ - if (parsed.options.name) { - mod_assertplus.string(parsed.options.name, - 'error\'s "name" must be a string'); - this.name = parsed.options.name; - } - - /* - * For debugging, we keep track of the original short message (attached - * this Error particularly) separately from the complete message (which - * includes the messages of our cause chain). - */ - this.jse_shortmsg = parsed.shortmessage; - message = parsed.shortmessage; - - /* - * If we've been given a cause, record a reference to it and update our - * message appropriately. - */ - cause = parsed.options.cause; - if (cause) { - mod_assertplus.ok(mod_isError(cause), 'cause is not an Error'); - this.jse_cause = cause; - - if (!parsed.options.skipCauseMessage) { - message += ': ' + cause.message; - } - } - - /* - * If we've been given an object with properties, shallow-copy that - * here. We don't want to use a deep copy in case there are non-plain - * objects here, but we don't want to use the original object in case - * the caller modifies it later. - */ - this.jse_info = {}; - if (parsed.options.info) { - for (k in parsed.options.info) { - this.jse_info[k] = parsed.options.info[k]; - } - } - - this.message = message; - Error.call(this, message); - - if (Error.captureStackTrace) { - ctor = parsed.options.constructorOpt || this.constructor; - Error.captureStackTrace(this, ctor); - } - - return (this); -} - -mod_util.inherits(VError, Error); -VError.prototype.name = 'VError'; - -VError.prototype.toString = function ve_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - - return (str); -}; - -/* - * This method is provided for compatibility. New callers should use - * VError.cause() instead. That method also uses the saner `null` return value - * when there is no cause. - */ -VError.prototype.cause = function ve_cause() -{ - var cause = VError.cause(this); - return (cause === null ? undefined : cause); -}; - -/* - * Static methods - * - * These class-level methods are provided so that callers can use them on - * instances of Errors that are not VErrors. New interfaces should be provided - * only using static methods to eliminate the class of programming mistake where - * people fail to check whether the Error object has the corresponding methods. - */ - -VError.cause = function (err) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - return (mod_isError(err.jse_cause) ? err.jse_cause : null); -}; - -VError.info = function (err) -{ - var rv, cause, k; - - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - cause = VError.cause(err); - if (cause !== null) { - rv = VError.info(cause); - } else { - rv = {}; - } - - if (typeof (err.jse_info) == 'object' && err.jse_info !== null) { - for (k in err.jse_info) { - rv[k] = err.jse_info[k]; - } - } - - return (rv); -}; - -VError.findCauseByName = function (err, name) -{ - var cause; - - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - mod_assertplus.string(name, 'name'); - mod_assertplus.ok(name.length > 0, 'name cannot be empty'); - - for (cause = err; cause !== null; cause = VError.cause(cause)) { - mod_assertplus.ok(mod_isError(cause)); - if (cause.name == name) { - return (cause); - } - } - - return (null); -}; - -VError.hasCauseWithName = function (err, name) -{ - return (VError.findCauseByName(err, name) !== null); -}; - -VError.fullStack = function (err) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - - var cause = VError.cause(err); - - if (cause) { - return (err.stack + '\ncaused by: ' + VError.fullStack(cause)); - } - - return (err.stack); -}; - -VError.errorFromList = function (errors) -{ - mod_assertplus.arrayOfObject(errors, 'errors'); - - if (errors.length === 0) { - return (null); - } - - errors.forEach(function (e) { - mod_assertplus.ok(mod_isError(e)); - }); - - if (errors.length == 1) { - return (errors[0]); - } - - return (new MultiError(errors)); -}; - -VError.errorForEach = function (err, func) -{ - mod_assertplus.ok(mod_isError(err), 'err must be an Error'); - mod_assertplus.func(func, 'func'); - - if (err instanceof MultiError) { - err.errors().forEach(function iterError(e) { func(e); }); - } else { - func(err); - } -}; - - -/* - * SError is like VError, but stricter about types. You cannot pass "null" or - * "undefined" as string arguments to the formatter. - */ -function SError() -{ - var args, obj, parsed, options; - - args = Array.prototype.slice.call(arguments, 0); - if (!(this instanceof SError)) { - obj = Object.create(SError.prototype); - SError.apply(obj, arguments); - return (obj); - } - - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': true - }); - - options = parsed.options; - VError.call(this, options, '%s', parsed.shortmessage); - - return (this); -} - -/* - * We don't bother setting SError.prototype.name because once constructed, - * SErrors are just like VErrors. - */ -mod_util.inherits(SError, VError); - - -/* - * Represents a collection of errors for the purpose of consumers that generally - * only deal with one error. Callers can extract the individual errors - * contained in this object, but may also just treat it as a normal single - * error, in which case a summary message will be printed. - */ -function MultiError(errors) -{ - mod_assertplus.array(errors, 'list of errors'); - mod_assertplus.ok(errors.length > 0, 'must be at least one error'); - this.ase_errors = errors; - - VError.call(this, { - 'cause': errors[0] - }, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's'); -} - -mod_util.inherits(MultiError, VError); -MultiError.prototype.name = 'MultiError'; - -MultiError.prototype.errors = function me_errors() -{ - return (this.ase_errors.slice(0)); -}; - - -/* - * See README.md for reference details. - */ -function WError() -{ - var args, obj, parsed, options; - - args = Array.prototype.slice.call(arguments, 0); - if (!(this instanceof WError)) { - obj = Object.create(WError.prototype); - WError.apply(obj, args); - return (obj); - } - - parsed = parseConstructorArguments({ - 'argv': args, - 'strict': false - }); - - options = parsed.options; - options['skipCauseMessage'] = true; - VError.call(this, options, '%s', parsed.shortmessage); - - return (this); -} - -mod_util.inherits(WError, VError); -WError.prototype.name = 'WError'; - -WError.prototype.toString = function we_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - if (this.jse_cause && this.jse_cause.message) - str += '; caused by ' + this.jse_cause.toString(); - - return (str); -}; - -/* - * For purely historical reasons, WError's cause() function allows you to set - * the cause. - */ -WError.prototype.cause = function we_cause(c) -{ - if (mod_isError(c)) - this.jse_cause = c; - - return (this.jse_cause); -}; - - -/***/ }), -/* 641 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var crypto_hash_sha512 = __webpack_require__(196).lowlevel.crypto_hash; - -/* - * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a - * result, it retains the original copyright and license. The two files are - * under slightly different (but compatible) licenses, and are here combined in - * one file. - * - * Credit for the actual porting work goes to: - * Devi Mandiri - */ - -/* - * The Blowfish portions are under the following license: - * - * Blowfish block cipher for OpenBSD - * Copyright 1997 Niels Provos - * All rights reserved. - * - * Implementation advice by David Mazieres . - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * The bcrypt_pbkdf portions are under the following license: - * - * Copyright (c) 2013 Ted Unangst - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * Performance improvements (Javascript-specific): - * - * Copyright 2016, Joyent Inc - * Author: Alex Wilson - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -// Ported from OpenBSD bcrypt_pbkdf.c v1.9 - -var BLF_J = 0; - -var Blowfish = function() { - this.S = [ - new Uint32Array([ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, - 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, - 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, - 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, - 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, - 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, - 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, - 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, - 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, - 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, - 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, - 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, - 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, - 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, - 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, - 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, - 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, - 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, - 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, - 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, - 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, - 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]), - new Uint32Array([ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, - 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, - 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, - 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, - 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, - 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, - 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, - 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, - 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, - 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, - 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, - 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, - 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, - 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, - 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, - 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, - 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, - 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, - 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, - 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, - 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, - 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]), - new Uint32Array([ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, - 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, - 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, - 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, - 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, - 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, - 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, - 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, - 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, - 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, - 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, - 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, - 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, - 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, - 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, - 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, - 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, - 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, - 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, - 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, - 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, - 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]), - new Uint32Array([ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, - 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, - 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, - 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, - 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, - 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, - 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, - 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, - 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, - 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, - 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, - 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, - 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, - 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, - 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, - 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, - 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, - 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, - 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, - 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, - 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, - 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6]) - ]; - this.P = new Uint32Array([ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, - 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b]); -}; - -function F(S, x8, i) { - return (((S[0][x8[i+3]] + - S[1][x8[i+2]]) ^ - S[2][x8[i+1]]) + - S[3][x8[i]]); -}; - -Blowfish.prototype.encipher = function(x, x8) { - if (x8 === undefined) { - x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); - } - x[0] ^= this.P[0]; - for (var i = 1; i < 16; i += 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i+1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[17]; - x[1] = t; -}; - -Blowfish.prototype.decipher = function(x) { - var x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); - x[0] ^= this.P[17]; - for (var i = 16; i > 0; i -= 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i-1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[0]; - x[1] = t; -}; - -function stream2word(data, databytes){ - var i, temp = 0; - for (i = 0; i < 4; i++, BLF_J++) { - if (BLF_J >= databytes) BLF_J = 0; - temp = (temp << 8) | data[BLF_J]; - } - return temp; -}; - -Blowfish.prototype.expand0state = function(key, keybytes) { - var d = new Uint32Array(2), i, k; - var d8 = new Uint8Array(d.buffer); - - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); - } - BLF_J = 0; - - for (i = 0; i < 18; i += 2) { - this.encipher(d, d8); - this.P[i] = d[0]; - this.P[i+1] = d[1]; - } - - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - this.encipher(d, d8); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } -}; - -Blowfish.prototype.expandstate = function(data, databytes, key, keybytes) { - var d = new Uint32Array(2), i, k; - - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); - } - - for (i = 0, BLF_J = 0; i < 18; i += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.P[i] = d[0]; - this.P[i+1] = d[1]; - } - - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } - BLF_J = 0; -}; - -Blowfish.prototype.enc = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.encipher(data.subarray(i*2)); - } -}; - -Blowfish.prototype.dec = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.decipher(data.subarray(i*2)); - } -}; - -var BCRYPT_BLOCKS = 8, - BCRYPT_HASHSIZE = 32; - -function bcrypt_hash(sha2pass, sha2salt, out) { - var state = new Blowfish(), - cdata = new Uint32Array(BCRYPT_BLOCKS), i, - ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105, - 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109, - 105,116,101]); //"OxychromaticBlowfishSwatDynamite" - - state.expandstate(sha2salt, 64, sha2pass, 64); - for (i = 0; i < 64; i++) { - state.expand0state(sha2salt, 64); - state.expand0state(sha2pass, 64); - } - - for (i = 0; i < BCRYPT_BLOCKS; i++) - cdata[i] = stream2word(ciphertext, ciphertext.byteLength); - for (i = 0; i < 64; i++) - state.enc(cdata, cdata.byteLength / 8); - - for (i = 0; i < BCRYPT_BLOCKS; i++) { - out[4*i+3] = cdata[i] >>> 24; - out[4*i+2] = cdata[i] >>> 16; - out[4*i+1] = cdata[i] >>> 8; - out[4*i+0] = cdata[i]; - } -}; - -function bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) { - var sha2pass = new Uint8Array(64), - sha2salt = new Uint8Array(64), - out = new Uint8Array(BCRYPT_HASHSIZE), - tmpout = new Uint8Array(BCRYPT_HASHSIZE), - countsalt = new Uint8Array(saltlen+4), - i, j, amt, stride, dest, count, - origkeylen = keylen; - - if (rounds < 1) - return -1; - if (passlen === 0 || saltlen === 0 || keylen === 0 || - keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20)) - return -1; - - stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength); - amt = Math.floor((keylen + stride - 1) / stride); - - for (i = 0; i < saltlen; i++) - countsalt[i] = salt[i]; - - crypto_hash_sha512(sha2pass, pass, passlen); - - for (count = 1; keylen > 0; count++) { - countsalt[saltlen+0] = count >>> 24; - countsalt[saltlen+1] = count >>> 16; - countsalt[saltlen+2] = count >>> 8; - countsalt[saltlen+3] = count; - - crypto_hash_sha512(sha2salt, countsalt, saltlen + 4); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (i = out.byteLength; i--;) - out[i] = tmpout[i]; - - for (i = 1; i < rounds; i++) { - crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (j = 0; j < out.byteLength; j++) - out[j] ^= tmpout[j]; - } - - amt = Math.min(amt, keylen); - for (i = 0; i < amt; i++) { - dest = i * stride + (count - 1); - if (dest >= origkeylen) - break; - key[dest] = out[i]; - } - keylen -= i; - } - - return 0; -}; - -module.exports = { - BLOCKS: BCRYPT_BLOCKS, - HASHSIZE: BCRYPT_HASHSIZE, - hash: bcrypt_hash, - pbkdf: bcrypt_pbkdf -}; - - -/***/ }), -/* 642 */, -/* 643 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_items(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId; - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if (Array.isArray($schema)) { - var $additionalItems = it.schema.additionalItems; - if ($additionalItems === false) { - out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), -/* 644 */, -/* 645 */, -/* 646 */, -/* 647 */, -/* 648 */, -/* 649 */, -/* 650 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -var Key = __webpack_require__(500); -var Fingerprint = __webpack_require__(400); -var Signature = __webpack_require__(575); -var PrivateKey = __webpack_require__(502); -var Certificate = __webpack_require__(202); -var Identity = __webpack_require__(378); -var errs = __webpack_require__(570); - -module.exports = { - /* top-level classes */ - Key: Key, - parseKey: Key.parse, - Fingerprint: Fingerprint, - parseFingerprint: Fingerprint.parse, - Signature: Signature, - parseSignature: Signature.parse, - PrivateKey: PrivateKey, - parsePrivateKey: PrivateKey.parse, - generatePrivateKey: PrivateKey.generate, - Certificate: Certificate, - parseCertificate: Certificate.parse, - createSelfSignedCertificate: Certificate.createSelfSigned, - createCertificate: Certificate.create, - Identity: Identity, - identityFromDN: Identity.parseDN, - identityForHost: Identity.forHost, - identityForUser: Identity.forUser, - identityForEmail: Identity.forEmail, - identityFromArray: Identity.fromArray, - - /* errors */ - FingerprintFormatError: errs.FingerprintFormatError, - InvalidAlgorithmError: errs.InvalidAlgorithmError, - KeyParseError: errs.KeyParseError, - SignatureParseError: errs.SignatureParseError, - KeyEncryptedError: errs.KeyEncryptedError, - CertificateParseError: errs.CertificateParseError -}; - - -/***/ }), -/* 651 */, -/* 652 */ -/***/ (function(module) { - -"use strict"; -// YAML error class. http://stackoverflow.com/questions/8458984 -// - - - -function formatError(exception, compact) { - var where = '', message = exception.reason || '(unknown reason)'; - - if (!exception.mark) return message; - - if (exception.mark.name) { - where += 'in "' + exception.mark.name + '" '; - } - - where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; - - if (!compact && exception.mark.snippet) { - where += '\n\n' + exception.mark.snippet; - } - - return message + ' ' + where; -} - - -function YAMLException(reason, mark) { - // Super constructor - Error.call(this); - - this.name = 'YAMLException'; - this.reason = reason; - this.mark = mark; - this.message = formatError(this, false); - - // Include stack trace in error object - if (Error.captureStackTrace) { - // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor); - } else { - // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; - } -} - - -// Inherit from Error -YAMLException.prototype = Object.create(Error.prototype); -YAMLException.prototype.constructor = YAMLException; - - -YAMLException.prototype.toString = function toString(compact) { - return this.name + ': ' + formatError(this, compact); -}; - - -module.exports = YAMLException; - - -/***/ }), -/* 653 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_oneOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $prevValid = 'prevValid' + $lvl, - $passingSchemas = 'passingSchemas' + $lvl; - out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - - -/***/ }), -/* 654 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var urlHasProtocol = /^https?:\/\//i; -var _default = urlHasProtocol; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 655 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(549); - -__webpack_require__(968); - -__webpack_require__(809); - -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); - -var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, options) { - var displayUrl = entity.display_url; - var expandedUrl = entity.expanded_url; // Goal: If a user copies and pastes a tweet containing t.co'ed link, the resulting paste - // should contain the full original URL (expanded_url), not the display URL. - // - // Method: Whenever possible, we actually emit HTML that contains expanded_url, and use - // font-size:0 to hide those parts that should not be displayed (because they are not part of display_url). - // Elements with font-size:0 get copied even though they are not visible. - // Note that display:none doesn't work here. Elements with display:none don't get copied. - // - // Additionally, we want to *display* ellipses, but we don't want them copied. To make this happen we - // wrap the ellipses in a tco-ellipsis class and provide an onCopy handler that sets display:none on - // everything with the tco-ellipsis class. - // - // Exception: pic.twitter.com images, for which expandedUrl = "https://twitter.com/#!/username/status/1234/photo/1 - // For those URLs, display_url is not a substring of expanded_url, so we don't do anything special to render the elided parts. - // For a pic.twitter.com URL, the only elided part will be the "https://", so this is fine. - - var displayUrlSansEllipses = displayUrl.replace(/…/g, ''); // We have to disregard ellipses for matching - // Note: we currently only support eliding parts of the URL at the beginning or the end. - // Eventually we may want to elide parts of the URL in the *middle*. If so, this code will - // become more complicated. We will probably want to create a regexp out of display URL, - // replacing every ellipsis with a ".*". - - if (expandedUrl.indexOf(displayUrlSansEllipses) != -1) { - var displayUrlIndex = expandedUrl.indexOf(displayUrlSansEllipses); - var v = { - displayUrlSansEllipses: displayUrlSansEllipses, - // Portion of expandedUrl that precedes the displayUrl substring - beforeDisplayUrl: expandedUrl.substr(0, displayUrlIndex), - // Portion of expandedUrl that comes after displayUrl - afterDisplayUrl: expandedUrl.substr(displayUrlIndex + displayUrlSansEllipses.length), - precedingEllipsis: displayUrl.match(/^…/) ? '…' : '', - followingEllipsis: displayUrl.match(/…$/) ? '…' : '' - }; - - for (var k in v) { - if (v.hasOwnProperty(k)) { - v[k] = (0, _htmlEscape["default"])(v[k]); - } - } // As an example: The user tweets "hi http://longdomainname.com/foo" - // This gets shortened to "hi http://t.co/xyzabc", with display_url = "…nname.com/foo" - // This will get rendered as: - // - // … - // - // http://longdomai - // - // - // nname.com/foo - // - // - //   - // … - // - - - v['invisible'] = options.invisibleTagAttrs; - return (0, _stringSupplant["default"])("#{precedingEllipsis} #{beforeDisplayUrl}#{displayUrlSansEllipses}#{afterDisplayUrl} #{followingEllipsis}", v); - } - - return displayUrl; -} - -module.exports = exports.default; - -/***/ }), -/* 656 */, -/* 657 */, -/* 658 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -var aws4 = exports, - url = __webpack_require__(835), - querystring = __webpack_require__(191), - crypto = __webpack_require__(417), - lru = __webpack_require__(951), - credentialsCache = lru(1000) - -// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html - -function hmac(key, string, encoding) { - return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding) -} - -function hash(string, encoding) { - return crypto.createHash('sha256').update(string, 'utf8').digest(encoding) -} - -// This function assumes the string has already been percent encoded -function encodeRfc3986(urlEncodedString) { - return urlEncodedString.replace(/[!'()*]/g, function(c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -// request: { path | body, [host], [method], [headers], [service], [region] } -// credentials: { accessKeyId, secretAccessKey, [sessionToken] } -function RequestSigner(request, credentials) { - - if (typeof request === 'string') request = url.parse(request) - - var headers = request.headers = (request.headers || {}), - hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host) - - this.request = request - this.credentials = credentials || this.defaultCredentials() - - this.service = request.service || hostParts[0] || '' - this.region = request.region || hostParts[1] || 'us-east-1' - - // SES uses a different domain from the service name - if (this.service === 'email') this.service = 'ses' - - if (!request.method && request.body) - request.method = 'POST' - - if (!headers.Host && !headers.host) { - headers.Host = request.hostname || request.host || this.createHost() - - // If a port is specified explicitly, use it as is - if (request.port) - headers.Host += ':' + request.port - } - if (!request.hostname && !request.host) - request.hostname = headers.Host || headers.host - - this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT' -} - -RequestSigner.prototype.matchHost = function(host) { - var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/) - var hostParts = (match || []).slice(1, 3) - - // ES's hostParts are sometimes the other way round, if the value that is expected - // to be region equals ‘es’ switch them back - // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com - if (hostParts[1] === 'es') - hostParts = hostParts.reverse() - - return hostParts -} - -// http://docs.aws.amazon.com/general/latest/gr/rande.html -RequestSigner.prototype.isSingleRegion = function() { - // Special case for S3 and SimpleDB in us-east-1 - if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true - - return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts'] - .indexOf(this.service) >= 0 -} - -RequestSigner.prototype.createHost = function() { - var region = this.isSingleRegion() ? '' : - (this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region, - service = this.service === 'ses' ? 'email' : this.service - return service + region + '.amazonaws.com' -} - -RequestSigner.prototype.prepareRequest = function() { - this.parsePath() - - var request = this.request, headers = request.headers, query - - if (request.signQuery) { - - this.parsedPath.query = query = this.parsedPath.query || {} - - if (this.credentials.sessionToken) - query['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !query['X-Amz-Expires']) - query['X-Amz-Expires'] = 86400 - - if (query['X-Amz-Date']) - this.datetime = query['X-Amz-Date'] - else - query['X-Amz-Date'] = this.getDateTime() - - query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256' - query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString() - query['X-Amz-SignedHeaders'] = this.signedHeaders() - - } else { - - if (!request.doNotModifyHeaders && !this.isCodeCommitGit) { - if (request.body && !headers['Content-Type'] && !headers['content-type']) - headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' - - if (request.body && !headers['Content-Length'] && !headers['content-length']) - headers['Content-Length'] = Buffer.byteLength(request.body) - - if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token']) - headers['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256']) - headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex') - - if (headers['X-Amz-Date'] || headers['x-amz-date']) - this.datetime = headers['X-Amz-Date'] || headers['x-amz-date'] - else - headers['X-Amz-Date'] = this.getDateTime() - } - - delete headers.Authorization - delete headers.authorization - } -} - -RequestSigner.prototype.sign = function() { - if (!this.parsedPath) this.prepareRequest() - - if (this.request.signQuery) { - this.parsedPath.query['X-Amz-Signature'] = this.signature() - } else { - this.request.headers.Authorization = this.authHeader() - } - - this.request.path = this.formatPath() - - return this.request -} - -RequestSigner.prototype.getDateTime = function() { - if (!this.datetime) { - var headers = this.request.headers, - date = new Date(headers.Date || headers.date || new Date) - - this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '') - - // Remove the trailing 'Z' on the timestamp string for CodeCommit git access - if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1) - } - return this.datetime -} - -RequestSigner.prototype.getDate = function() { - return this.getDateTime().substr(0, 8) -} - -RequestSigner.prototype.authHeader = function() { - return [ - 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(), - 'SignedHeaders=' + this.signedHeaders(), - 'Signature=' + this.signature(), - ].join(', ') -} - -RequestSigner.prototype.signature = function() { - var date = this.getDate(), - cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(), - kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey) - if (!kCredentials) { - kDate = hmac('AWS4' + this.credentials.secretAccessKey, date) - kRegion = hmac(kDate, this.region) - kService = hmac(kRegion, this.service) - kCredentials = hmac(kService, 'aws4_request') - credentialsCache.set(cacheKey, kCredentials) - } - return hmac(kCredentials, this.stringToSign(), 'hex') -} - -RequestSigner.prototype.stringToSign = function() { - return [ - 'AWS4-HMAC-SHA256', - this.getDateTime(), - this.credentialString(), - hash(this.canonicalString(), 'hex'), - ].join('\n') -} - -RequestSigner.prototype.canonicalString = function() { - if (!this.parsedPath) this.prepareRequest() - - var pathStr = this.parsedPath.path, - query = this.parsedPath.query, - headers = this.request.headers, - queryStr = '', - normalizePath = this.service !== 's3', - decodePath = this.service === 's3' || this.request.doNotEncodePath, - decodeSlashesInPath = this.service === 's3', - firstValOnly = this.service === 's3', - bodyHash - - if (this.service === 's3' && this.request.signQuery) { - bodyHash = 'UNSIGNED-PAYLOAD' - } else if (this.isCodeCommitGit) { - bodyHash = '' - } else { - bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] || - hash(this.request.body || '', 'hex') - } - - if (query) { - queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) { - if (!key) return obj - obj[key] = !Array.isArray(query[key]) ? query[key] : - (firstValOnly ? query[key][0] : query[key].slice().sort()) - return obj - }, {}))) - } - if (pathStr !== '/') { - if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/') - pathStr = pathStr.split('/').reduce(function(path, piece) { - if (normalizePath && piece === '..') { - path.pop() - } else if (!normalizePath || piece !== '.') { - if (decodePath) piece = decodeURIComponent(piece) - path.push(encodeRfc3986(encodeURIComponent(piece))) - } - return path - }, []).join('/') - if (pathStr[0] !== '/') pathStr = '/' + pathStr - if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/') - } - - return [ - this.request.method || 'GET', - pathStr, - queryStr, - this.canonicalHeaders() + '\n', - this.signedHeaders(), - bodyHash, - ].join('\n') -} - -RequestSigner.prototype.canonicalHeaders = function() { - var headers = this.request.headers - function trimAll(header) { - return header.toString().trim().replace(/\s+/g, ' ') - } - return Object.keys(headers) - .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 }) - .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) }) - .join('\n') -} - -RequestSigner.prototype.signedHeaders = function() { - return Object.keys(this.request.headers) - .map(function(key) { return key.toLowerCase() }) - .sort() - .join(';') -} - -RequestSigner.prototype.credentialString = function() { - return [ - this.getDate(), - this.region, - this.service, - 'aws4_request', - ].join('/') -} - -RequestSigner.prototype.defaultCredentials = function() { - var env = process.env - return { - accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY, - secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY, - sessionToken: env.AWS_SESSION_TOKEN, - } -} - -RequestSigner.prototype.parsePath = function() { - var path = this.request.path || '/', - queryIx = path.indexOf('?'), - query = null - - if (queryIx >= 0) { - query = querystring.parse(path.slice(queryIx + 1)) - path = path.slice(0, queryIx) - } - - // S3 doesn't always encode characters > 127 correctly and - // all services don't encode characters > 255 correctly - // So if there are non-reserved chars (and it's not already all % encoded), just encode them all - if (/[^0-9A-Za-z!'()*\-._~%/]/.test(path)) { - path = path.split('/').map(function(piece) { - return encodeURIComponent(decodeURIComponent(piece)) - }).join('/') - } - - this.parsedPath = { - path: path, - query: query, - } -} - -RequestSigner.prototype.formatPath = function() { - var path = this.parsedPath.path, - query = this.parsedPath.query - - if (!query) return path - - // Services don't support empty query string keys - if (query[''] != null) delete query[''] - - return path + '?' + encodeRfc3986(querystring.stringify(query)) -} - -aws4.RequestSigner = RequestSigner - -aws4.sign = function(request, credentials) { - return new RequestSigner(request, credentials).sign() -} - - -/***/ }), -/* 659 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _crypto = _interopRequireDefault(__webpack_require__(417)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('md5').update(bytes).digest(); -} - -var _default = md5; -exports.default = _default; - -/***/ }), -/* 660 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _clone = _interopRequireDefault(__webpack_require__(582)); - -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); - -var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var at = text.substring(entity.indices[0], entity.indices[0] + 1); - var user = (0, _htmlEscape["default"])(entity.screenName); - var slashListname = (0, _htmlEscape["default"])(entity.listSlug); - var isList = entity.listSlug && !options.suppressLists; - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs['class'] = isList ? options.listClass : options.usernameClass; - attrs.href = isList ? options.listUrlBase + user + slashListname : options.usernameUrlBase + user; - - if (!isList && !options.suppressDataScreenName) { - attrs['data-screen-name'] = user; - } - - if (options.targetBlank) { - attrs.target = '_blank'; - } - - return (0, _linkToTextWithSymbol["default"])(entity, at, isList ? user + slashListname : user, attrs, options); -} - -module.exports = exports.default; - -/***/ }), -/* 661 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _cashtag = _interopRequireDefault(__webpack_require__(728)); - -var _punct = _interopRequireDefault(__webpack_require__(412)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _spaces = _interopRequireDefault(__webpack_require__(61)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validCashtag = (0, _regexSupplant["default"])('(^|#{spaces})(\\$)(#{cashtag})(?=$|\\s|[#{punct}])', { - cashtag: _cashtag["default"], - spaces: _spaces["default"], - punct: _punct["default"] -}, 'gi'); -var _default = validCashtag; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 662 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -__webpack_require__(277); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validCCTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ລາວ|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|' + 'ભારત|ਭਾਰਤ|ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|موريتانيا|مليسيا|مصر|قطر|فلسطين|عمان|' + 'عراق|سورية|سودان|تونس|بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|البحرين|الاردن|հայ|қаз|' + 'укр|срб|рф|мон|мкд|ею|бел|бг|ευ|ελ|zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|' + 'ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|' + 'sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|re|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|' + 'nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|' + 'me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|' + 'is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|' + 'gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|' + 'cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|' + 'ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' + ')(?=[^0-9a-zA-Z@+-]|$))')); -var _default = validCCTLD; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 663 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var regexpFlags = __webpack_require__(788); - -var nativeExec = RegExp.prototype.exec; -// This always refers to the native implementation, because the -// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, -// which loads this file before patching the method. -var nativeReplace = String.prototype.replace; - -var patchedExec = nativeExec; - -var LAST_INDEX = 'lastIndex'; - -var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/, - re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; -})(); - -// nonparticipating capturing group, copied from es5-shim's String#split patch. -var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - -var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; - -if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; - - match = nativeExec.call(re, str); - - if (UPDATES_LAST_INDEX_WRONG && match) { - re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - // eslint-disable-next-line no-loop-func - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - return match; - }; -} - -module.exports = patchedExec; - - -/***/ }), -/* 664 */, -/* 665 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; -const os_1 = __webpack_require__(87); -const fs_1 = __webpack_require__(747); -const { access, appendFile, writeFile } = fs_1.promises; -exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; -exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; -class Summary { - constructor() { - this._buffer = ''; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); - } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } - catch (_a) { - throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); - } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ''; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, (lang && { lang })); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? 'ol' : 'ul'; - const listItems = items.map(item => this.wrap('li', item)).join(''); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map(row => { - const cells = row - .map(cell => { - if (typeof cell === 'string') { - return this.wrap('td', cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? 'th' : 'td'; - const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); - return this.wrap(tag, data, attrs); - }) - .join(''); - return this.wrap('tr', cells); - }) - .join(''); - const element = this.wrap('table', tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) - ? tag - : 'h1'; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, (cite && { cite })); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); - } -} -const _summary = new Summary(); -/** - * @deprecated use `core.summary` - */ -exports.markdownSummary = _summary; -exports.summary = _summary; -//# sourceMappingURL=summary.js.map - -/***/ }), -/* 666 */, -/* 667 */, -/* 668 */, -/* 669 */ -/***/ (function(module) { - -module.exports = require("util"); - -/***/ }), -/* 670 */ -/***/ (function(module) { - -module.exports = require("buffer"); - -/***/ }), -/* 671 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); - -var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); - -var _validUrlPathEndingChars = _interopRequireDefault(__webpack_require__(205)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ -var validUrlPath = (0, _regexSupplant["default"])('(?:' + '(?:' + '#{validGeneralUrlPathChars}*' + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + '#{validUrlPathEndingChars}' + ')|(?:@#{validGeneralUrlPathChars}+/)' + ')', { - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"], - validUrlPathEndingChars: _validUrlPathEndingChars["default"] -}, 'i'); -var _default = validUrlPath; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 672 */ -/***/ (function(module) { - -module.exports = {"$id":"afterRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}; - -/***/ }), -/* 673 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_not(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; -} - - -/***/ }), -/* 674 */, -/* 675 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// most Object methods by ES6 should accept primitives -var $export = __webpack_require__(195); -var core = __webpack_require__(245); -var fails = __webpack_require__(971); -module.exports = function (KEY, exec) { - var fn = (core.Object || {})[KEY] || Object[KEY]; - var exp = {}; - exp[KEY] = exec(fn); - $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); -}; - - -/***/ }), -/* 676 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(189); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 677 */, -/* 678 */, -/* 679 */ -/***/ (function(module) { - -module.exports = {"$id":"pageTimings.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","properties":{"onContentLoad":{"type":"number","min":-1},"onLoad":{"type":"number","min":-1},"comment":{"type":"string"}}}; - -/***/ }), -/* 680 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(809); - -__webpack_require__(549); - -var _atSigns = _interopRequireDefault(__webpack_require__(1)); - -var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); - -var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text || !text.match(_atSigns["default"])) { - return []; - } - - var possibleNames = []; - text.replace(_validMentionOrList["default"], function (match, before, atSign, screenName, slashListname, offset, chunk) { - var after = chunk.slice(offset + match.length); - - if (!after.match(_endMentionMatch["default"])) { - slashListname = slashListname || ''; - var startPosition = offset + before.length; - var endPosition = startPosition + screenName.length + slashListname.length + 1; - possibleNames.push({ - screenName: screenName, - listSlug: slashListname, - indices: [startPosition, endPosition] - }); - } - }); - return possibleNames; -} - -module.exports = exports.default; - -/***/ }), -/* 681 */, -/* 682 */, -/* 683 */, -/* 684 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - -// 19.1.3.6 Object.prototype.toString() -var classof = __webpack_require__(324); -var test = {}; -test[__webpack_require__(621)('toStringTag')] = 'z'; -if (test + '' != '[object z]') { - __webpack_require__(976)(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); -} - - -/***/ }), -/* 685 */, -/* 686 */, -/* 687 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_format(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - if (it.opts.format === false) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $unknownFormats = it.opts.unknownFormats, - $allowUnknown = Array.isArray($unknownFormats); - if ($isData) { - var $format = 'format' + $lvl, - $isObject = 'isObject' + $lvl, - $formatType = 'formatType' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; - if (it.async) { - out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; - } - out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' ('; - if ($unknownFormats != 'ignore') { - out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; - if ($allowUnknown) { - out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; - } - out += ') || '; - } - out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; - if (it.async) { - out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; - } else { - out += ' ' + ($format) + '(' + ($data) + ') '; - } - out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; - } else { - var $format = it.formats[$schema]; - if (!$format) { - if ($unknownFormats == 'ignore') { - it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else { - throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); - } - } - var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - if ($formatType != $ruleType) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - if ($async) { - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; - } else { - out += ' if (! '; - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - if (typeof $format == 'function') { - out += ' ' + ($formatRef) + '(' + ($data) + ') '; - } else { - out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; - } - out += ') { '; - } - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match format "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 688 */, -/* 689 */, -/* 690 */ -/***/ (function(module) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 691 */ -/***/ (function(module) { - -"use strict"; - - -// https://mathiasbynens.be/notes/javascript-encoding -// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode -module.exports = function ucs2length(str) { - var length = 0 - , len = str.length - , pos = 0 - , value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; -}; - - -/***/ }), -/* 692 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = 'Deprecation'; - } - -} - -exports.Deprecation = Deprecation; - - -/***/ }), -/* 693 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var defer = __webpack_require__(504); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} - - -/***/ }), -/* 694 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.2.8 IsRegExp(argument) -var isObject = __webpack_require__(956); -var cof = __webpack_require__(189); -var MATCH = __webpack_require__(621)('match'); -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); -}; - - -/***/ }), -/* 695 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// all object keys, includes non-enumerable and symbols -var gOPN = __webpack_require__(996); -var gOPS = __webpack_require__(243); -var anObject = __webpack_require__(990); -var Reflect = __webpack_require__(300).Reflect; -module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = gOPN.f(anObject(it)); - var getSymbols = gOPS.f; - return getSymbols ? keys.concat(getSymbols(it)) : keys; -}; - - -/***/ }), -/* 696 */, -/* 697 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -/* - * extsprintf.js: extended POSIX-style sprintf - */ - -var mod_assert = __webpack_require__(357); -var mod_util = __webpack_require__(669); - -/* - * Public interface - */ -exports.sprintf = jsSprintf; -exports.printf = jsPrintf; -exports.fprintf = jsFprintf; - -/* - * Stripped down version of s[n]printf(3c). We make a best effort to throw an - * exception when given a format string we don't understand, rather than - * ignoring it, so that we won't break existing programs if/when we go implement - * the rest of this. - * - * This implementation currently supports specifying - * - field alignment ('-' flag), - * - zero-pad ('0' flag) - * - always show numeric sign ('+' flag), - * - field width - * - conversions for strings, decimal integers, and floats (numbers). - * - argument size specifiers. These are all accepted but ignored, since - * Javascript has no notion of the physical size of an argument. - * - * Everything else is currently unsupported, most notably precision, unsigned - * numbers, non-decimal numbers, and characters. - */ -function jsSprintf(fmt) -{ - var regex = [ - '([^%]*)', /* normal text */ - '%', /* start of format */ - '([\'\\-+ #0]*?)', /* flags (optional) */ - '([1-9]\\d*)?', /* width (optional) */ - '(\\.([1-9]\\d*))?', /* precision (optional) */ - '[lhjztL]*?', /* length mods (ignored) */ - '([diouxXfFeEgGaAcCsSp%jr])' /* conversion */ - ].join(''); - - var re = new RegExp(regex); - var args = Array.prototype.slice.call(arguments, 1); - var flags, width, precision, conversion; - var left, pad, sign, arg, match; - var ret = ''; - var argn = 1; - - mod_assert.equal('string', typeof (fmt)); - - while ((match = re.exec(fmt)) !== null) { - ret += match[1]; - fmt = fmt.substring(match[0].length); - - flags = match[2] || ''; - width = match[3] || 0; - precision = match[4] || ''; - conversion = match[6]; - left = false; - sign = false; - pad = ' '; - - if (conversion == '%') { - ret += '%'; - continue; - } - - if (args.length === 0) - throw (new Error('too few args to sprintf')); - - arg = args.shift(); - argn++; - - if (flags.match(/[\' #]/)) - throw (new Error( - 'unsupported flags: ' + flags)); - - if (precision.length > 0) - throw (new Error( - 'non-zero precision not supported')); - - if (flags.match(/-/)) - left = true; - - if (flags.match(/0/)) - pad = '0'; - - if (flags.match(/\+/)) - sign = true; - - switch (conversion) { - case 's': - if (arg === undefined || arg === null) - throw (new Error('argument ' + argn + - ': attempted to print undefined or null ' + - 'as a string')); - ret += doPad(pad, width, left, arg.toString()); - break; - - case 'd': - arg = Math.floor(arg); - /*jsl:fallthru*/ - case 'f': - sign = sign && arg > 0 ? '+' : ''; - ret += sign + doPad(pad, width, left, - arg.toString()); - break; - - case 'x': - ret += doPad(pad, width, left, arg.toString(16)); - break; - - case 'j': /* non-standard */ - if (width === 0) - width = 10; - ret += mod_util.inspect(arg, false, width); - break; - - case 'r': /* non-standard */ - ret += dumpException(arg); - break; - - default: - throw (new Error('unsupported conversion: ' + - conversion)); - } - } - - ret += fmt; - return (ret); -} - -function jsPrintf() { - var args = Array.prototype.slice.call(arguments); - args.unshift(process.stdout); - jsFprintf.apply(null, args); -} - -function jsFprintf(stream) { - var args = Array.prototype.slice.call(arguments, 1); - return (stream.write(jsSprintf.apply(this, args))); -} - -function doPad(chr, width, left, str) -{ - var ret = str; - - while (ret.length < width) { - if (left) - ret += chr; - else - ret = chr + ret; - } - - return (ret); -} - -/* - * This function dumps long stack traces for exceptions having a cause() method. - * See node-verror for an example. - */ -function dumpException(ex) -{ - var ret; - - if (!(ex instanceof Error)) - throw (new Error(jsSprintf('invalid type for %%r: %j', ex))); - - /* Note that V8 prepends "ex.stack" with ex.toString(). */ - ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack; - - if (ex.cause && typeof (ex.cause) === 'function') { - var cex = ex.cause(); - if (cex) { - ret += '\nCaused by: ' + dumpException(cex); - } - } - - return (ret); -} - - -/***/ }), -/* 698 */, -/* 699 */, -/* 700 */, -/* 701 */ -/***/ (function(module) { - -"use strict"; - - - -function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); -} - - -function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); -} - - -function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; - - return [ sequence ]; -} - - -function extend(target, source) { - var index, length, key, sourceKeys; - - if (source) { - sourceKeys = Object.keys(source); - - for (index = 0, length = sourceKeys.length; index < length; index += 1) { - key = sourceKeys[index]; - target[key] = source[key]; - } - } - - return target; -} - - -function repeat(string, count) { - var result = '', cycle; - - for (cycle = 0; cycle < count; cycle += 1) { - result += string; - } - - return result; -} - - -function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); -} - - -module.exports.isNothing = isNothing; -module.exports.isObject = isObject; -module.exports.toArray = toArray; -module.exports.repeat = repeat; -module.exports.isNegativeZero = isNegativeZero; -module.exports.extend = extend; - - -/***/ }), -/* 702 */, -/* 703 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var invalidUrlWithoutProtocolPrecedingChars = /[-_.\/]$/; -var _default = invalidUrlWithoutProtocolPrecedingChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 704 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = !__webpack_require__(843) && !__webpack_require__(971)(function () { - return Object.defineProperty(__webpack_require__(598)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 705 */, -/* 706 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate_propertyNames(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $i = 'i' + $lvl, - $invalidName = '\' + ' + $key + ' + \'', - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined; '; - } - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' var startErrs' + ($lvl) + ' = errors; '; - var $passData = $key; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, - /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } - }, - defaultStyle: 'decimal', - styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] - } -}); - - -/***/ }), -/* 708 */, -/* 709 */, -/* 710 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(956); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 711 */, -/* 712 */, -/* 713 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = tweet; - -const { promises: fs } = __webpack_require__(747); -const Twitter = __webpack_require__(918); -const mime = __webpack_require__(233); - -const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; - -async function tweet({ twitterCredentials }, tweetData, tweetFile) { - const client = new Twitter(twitterCredentials); - return handleTweet(client, tweetData, tweetFile); -} - -async function handleTweet(client, tweet, name) { - if (tweet.retweet && !tweet.text) { - // TODO: Should this throw if an invalid tweet is passed and there is no match? - const match = tweet.retweet.match(TWEET_REGEX); - if (match) return createRetweet(client, match[1]); - } - - const tweetData = { - status: tweet.text, - }; - - if (tweet.poll) { - /* istanbul ignore if */ - if (!process.env.TWITTER_ACCOUNT_ID) { - throw new Error(`TWITTER_ACCOUNT_ID environment variable must be set`); - } - - tweetData.card_uri = await createPoll(client, { - name, - pollOptions: tweet.poll, - }).then((poll) => poll.card_uri); - } - - if (tweet.reply) { - // TODO: Should this throw if an invalid reply is passed and there is no match? - const match = tweet.reply.match(TWEET_REGEX); - if (match) { - tweetData.in_reply_to_status_id = match[1]; - tweetData.auto_populate_reply_metadata = true; - } - } - - if (tweet.retweet) { - // TODO: Should this throw if an invalid tweet is passed and there is no match? - const match = tweet.retweet.match(TWEET_REGEX); - if (match) tweetData.attachment_url = match[0]; - } - - if (tweet.media) - tweetData.media_ids = await Promise.all( - tweet.media.map((media) => createMedia(client, media)) - ).then((ids) => ids.join(",")); - - const tweetResult = await createTweet(client, tweetData); - if (tweet.thread) - tweetResult.thread = await handleTweet( - client, - { ...tweet.thread, reply: tweetResult.url }, - name - ); - - return tweetResult; -} - -function createPoll( - client, - { - name, - text, - pollOptions: [first_choice, second_choice, third_choice, fourth_choice], - } -) { - return new Promise((resolve, reject) => { - // TODO: Switch to the v2 Twitter API for creating tweets and use the `poll` object, not Ads API - // https://developer.twitter.com/en/docs/ads/creatives/api-reference/poll#post-accounts-account-id-cards-poll - client.post( - `https://ads-api.twitter.com/11/accounts/${process.env.TWITTER_ACCOUNT_ID}/cards/poll`, - { - name, - duration_in_minutes: 1440, // two days - first_choice, - second_choice, - third_choice, - fourth_choice, - text, - }, - (error, result) => { - /* istanbul ignore if */ - if (error) { - return reject(error); - } - - resolve({ card_uri: result.data.card_uri }); - } - ); - }); -} - -async function createMedia(client, { file, alt }) { - const { size } = await fs.stat(file); - - const id = await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "INIT", - total_bytes: size, - media_type: mime.lookup(file), - }, - (error, result) => { - if (error) return reject(error); - resolve(result.media_id_string); - } - ); - }); - - const data = await fs.readFile(file); - - await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "APPEND", - media_id: id, - media: data, - segment_index: 0, - }, - (error) => { - if (error) return reject(error); - resolve(); - } - ); - }); - - await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "FINALIZE", - media_id: id, - }, - (error) => { - if (error) return reject(error); - resolve(); - } - ); - }); - - // TODO: Support alt text (twitter library does not support JSON payloads) - // https://github.com/desmondmorris/node-twitter/issues/347 - // if (alt) { - // await new Promise((resolve, reject) => { - // client.post( - // "media/metadata/create", - // { - // media_id: id, - // alt_text: { - // text: alt, - // }, - // }, - // (error) => { - // if (error) return reject(error); - // resolve(); - // } - // ); - // }); - // } - - return id; -} - -function createTweet(client, options) { - return new Promise((resolve, reject) => { - client.post("statuses/update", options, (error, result) => { - if (error) { - return reject(error); - } - - resolve({ - text: options.status, - url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, - }); - }); - }); -} - -function createRetweet(client, id) { - return new Promise((resolve, reject) => { - client.post(`statuses/retweet/${id}`, {}, (error, result) => { - if (error) { - return reject(error); - } - - resolve({ - retweet: `https://twitter.com/${result.retweeted_status.user.screen_name}/status/${result.retweeted_status.id_str}`, - url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, - }); - }); - }); -} - - -/***/ }), -/* 714 */, -/* 715 */, -/* 716 */, -/* 717 */, -/* 718 */, -/* 719 */, -/* 720 */, -/* 721 */ -/***/ (function(module) { - -"use strict"; - - -function formatHostname (hostname) { - // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' - return hostname.replace(/^\.*/, '.').toLowerCase() -} - -function parseNoProxyZone (zone) { - zone = zone.trim().toLowerCase() - - var zoneParts = zone.split(':', 2) - var zoneHost = formatHostname(zoneParts[0]) - var zonePort = zoneParts[1] - var hasPort = zone.indexOf(':') > -1 - - return {hostname: zoneHost, port: zonePort, hasPort: hasPort} -} - -function uriInNoProxy (uri, noProxy) { - var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') - var hostname = formatHostname(uri.hostname) - var noProxyList = noProxy.split(',') - - // iterate through the noProxyList until it finds a match. - return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { - var isMatchedAt = hostname.indexOf(noProxyZone.hostname) - var hostnameMatched = ( - isMatchedAt > -1 && - (isMatchedAt === hostname.length - noProxyZone.hostname.length) - ) - - if (noProxyZone.hasPort) { - return (port === noProxyZone.port) && hostnameMatched - } - - return hostnameMatched - }) -} - -function getProxyFromURI (uri) { - // Decide the proper request proxy to use based on the request URI object and the - // environmental variables (NO_PROXY, HTTP_PROXY, etc.) - // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) - - var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' - - // if the noProxy is a wildcard then return null - - if (noProxy === '*') { - return null - } - - // if the noProxy is not empty and the uri is found return null - - if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { - return null - } - - // Check for HTTP or HTTPS Proxy in environment Else default to null - - if (uri.protocol === 'http:') { - return process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - if (uri.protocol === 'https:') { - return process.env.HTTPS_PROXY || - process.env.https_proxy || - process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - // if none of that works, return null - // (What uri protocol are you using then?) - - return null -} - -module.exports = getProxyFromURI - - -/***/ }), -/* 722 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(210); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities, indicesInUTF16) { - if (entities.length == 0) { - return; - } - - var charIndex = 0; - var codePointIndex = 0; // sort entities by start index - - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var entityIndex = 0; - var entity = entities[0]; - - while (charIndex < text.length) { - if (entity.indices[0] == (indicesInUTF16 ? charIndex : codePointIndex)) { - var len = entity.indices[1] - entity.indices[0]; - entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; - entity.indices[1] = entity.indices[0] + len; - entityIndex++; - - if (entityIndex == entities.length) { - // no more entity - break; - } - - entity = entities[entityIndex]; - } - - var c = text.charCodeAt(charIndex); - - if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { - // Found high surrogate char - c = text.charCodeAt(charIndex + 1); - - if (c >= 0xdc00 && c <= 0xdfff) { - // Found surrogate pair - charIndex++; - } - } - - codePointIndex++; - charIndex++; - } -} - -module.exports = exports.default; - -/***/ }), -/* 723 */, -/* 724 */, -/* 725 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -var core = __webpack_require__(448); -var authAction = __webpack_require__(414); -var pluginPaginateRest = __webpack_require__(299); -var pluginRestEndpointMethods = __webpack_require__(842); - -const VERSION = "4.0.8"; - -const HttpsProxyAgent = __webpack_require__(338); - -const DEFAULTS = { - authStrategy: authAction.createActionAuth, - baseUrl: getApiBaseUrl(), - userAgent: `octokit-action.js/${VERSION}` -}; - -function getProxyAgent() { - const httpProxy = process.env["HTTP_PROXY"] || process.env["http_proxy"]; - - if (httpProxy) { - return new HttpsProxyAgent(httpProxy); - } - - const httpsProxy = process.env["HTTPS_PROXY"] || process.env["https_proxy"]; - - if (httpsProxy) { - return new HttpsProxyAgent(httpsProxy); - } - - return undefined; -} - -const Octokit = core.Octokit.plugin(pluginPaginateRest.paginateRest, pluginRestEndpointMethods.legacyRestEndpointMethods).defaults(function buildDefaults(options) { - return { ...DEFAULTS, - ...options, - request: { - agent: getProxyAgent(), - ...options.request - } - }; -}); - -function getApiBaseUrl() { - /* istanbul ignore next */ - return process.env["GITHUB_API_URL"] || "https://api.github.com"; -} - -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 726 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; -/* eslint-disable node/no-deprecated-api */ - - - -var buffer = __webpack_require__(670) -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer - - -/***/ }), -/* 727 */, -/* 728 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var cashtag = /[a-z]{1,6}(?:[._][a-z]{1,2})?/i; -var _default = cashtag; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 729 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomainSegment = /(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)/i; -var _default = validateUrlDomainSegment; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 730 */ -/***/ (function(__unusedmodule, exports) { - -/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ -(function (global, factory) { - true ? factory(exports) : - undefined; -}(this, (function (exports) { 'use strict'; - -function merge() { - for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { - sets[_key] = arguments[_key]; - } - - if (sets.length > 1) { - sets[0] = sets[0].slice(0, -1); - var xl = sets.length - 1; - for (var x = 1; x < xl; ++x) { - sets[x] = sets[x].slice(1, -1); - } - sets[xl] = sets[xl].slice(1); - return sets.join(''); - } else { - return sets[0]; - } -} -function subexp(str) { - return "(?:" + str + ")"; -} -function typeOf(o) { - return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); -} -function toUpperCase(str) { - return str.toUpperCase(); -} -function toArray(obj) { - 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) : []; -} -function assign(target, source) { - var obj = target; - if (source) { - for (var key in source) { - obj[key] = source[key]; - } - } - return obj; -} - -function buildExps(isIRI) { - var ALPHA$$ = "[A-Za-z]", - CR$ = "[\\x0D]", - DIGIT$$ = "[0-9]", - DQUOTE$$ = "[\\x22]", - HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), - //case-insensitive - LF$$ = "[\\x0A]", - SP$$ = "[\\x20]", - PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), - //expanded - GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", - SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", - RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), - UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", - //subset, excludes bidi control characters - IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", - //subset - UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), - SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), - USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), - DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), - 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$$), - //relaxed parsing rules - IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), - H16$ = subexp(HEXDIG$$ + "{1,4}"), - LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), - IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), - // 6( h16 ":" ) ls32 - IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), - // "::" 5( h16 ":" ) ls32 - IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), - //[ h16 ] "::" 4( h16 ":" ) ls32 - IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), - //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), - //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), - //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), - //[ *4( h16 ":" ) h16 ] "::" ls32 - IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), - //[ *5( h16 ":" ) h16 ] "::" h16 - IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), - //[ *6( h16 ":" ) h16 ] "::" - IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), - ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), - //RFC 6874 - IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), - //RFC 6874 - IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), - //RFC 6874, with relaxed parsing rules - IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), - IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), - //RFC 6874 - REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), - HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), - PORT$ = subexp(DIGIT$$ + "*"), - AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), - PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), - SEGMENT$ = subexp(PCHAR$ + "*"), - SEGMENT_NZ$ = subexp(PCHAR$ + "+"), - SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), - PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), - PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), - //simplified - PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), - //simplified - PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), - //simplified - PATH_EMPTY$ = "(?!" + PCHAR$ + ")", - PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), - FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), - HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), - URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), - RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), - URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), - ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), - GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", - SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", - AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; - return { - NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), - NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), - NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), - NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), - ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), - UNRESERVED: new RegExp(UNRESERVED$$, "g"), - OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), - PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), - IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), - IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules - }; -} -var URI_PROTOCOL = buildExps(false); - -var IRI_PROTOCOL = buildExps(true); - -var slicedToArray = function () { - function sliceIterator(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"]) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - return function (arr, i) { - if (Array.isArray(arr)) { - return arr; - } else if (Symbol.iterator in Object(arr)) { - return sliceIterator(arr, i); - } else { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - }; -}(); - - - - - - - - - - - - - -var toConsumableArray = function (arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } else { - return Array.from(arr); - } -}; - -/** Highest positive signed 32-bit float value */ - -var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -var base = 36; -var tMin = 1; -var tMax = 26; -var skew = 38; -var damp = 700; -var initialBias = 72; -var initialN = 128; // 0x80 -var delimiter = '-'; // '\x2D' - -/** Regular expressions */ -var regexPunycode = /^xn--/; -var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -var errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -var baseMinusTMin = base - tMin; -var floor = Math.floor; -var stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error$1(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - var result = []; - var length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - var output = []; - var counter = 0; - var length = string.length; - while (counter < length) { - var value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - var extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { - // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -var ucs2encode = function ucs2encode(array) { - return String.fromCodePoint.apply(String, toConsumableArray(array)); -}; - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -var basicToDigit = function basicToDigit(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -var digitToBasic = function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -var adapt = function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -var decode = function decode(input) { - // Don't use UCS-2. - var output = []; - var inputLength = input.length; - var i = 0; - var n = initialN; - var bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - var basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (var j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error$1('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - var oldi = i; - for (var w = 1, k = base;; /* no condition */k += base) { - - if (index >= inputLength) { - error$1('invalid-input'); - } - - var digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error$1('overflow'); - } - - i += digit * w; - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - - if (digit < t) { - break; - } - - var baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error$1('overflow'); - } - - w *= baseMinusT; - } - - var out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error$1('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - } - - return String.fromCodePoint.apply(String, output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -var encode = function encode(input) { - var output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - var inputLength = input.length; - - // Initialize the state. - var n = initialN; - var delta = 0; - var bias = initialBias; - - // Handle the basic code points. - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var _currentValue2 = _step.value; - - if (_currentValue2 < 0x80) { - output.push(stringFromCharCode(_currentValue2)); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - var basicLength = output.length; - var handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - var m = maxInt; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var currentValue = _step2.value; - - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - var handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error$1('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var _currentValue = _step3.value; - - if (_currentValue < n && ++delta > maxInt) { - error$1('overflow'); - } - if (_currentValue == n) { - // Represent delta as a generalized variable-length integer. - var q = delta; - for (var k = base;; /* no condition */k += base) { - var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; - if (q < t) { - break; - } - var qMinusT = q - t; - var baseMinusT = base - t; - output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - ++delta; - ++n; - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -var toUnicode = function toUnicode(input) { - return mapDomain(input, function (string) { - return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -var toASCII = function toASCII(input) { - return mapDomain(input, function (string) { - return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -var punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode -}; - -/** - * URI.js - * - * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. - * @author Gary Court - * @see http://github.com/garycourt/uri-js - */ -/** - * Copyright 2011 Gary Court. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of Gary Court. - */ -var SCHEMES = {}; -function pctEncChar(chr) { - var c = chr.charCodeAt(0); - var e = void 0; - 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(); - return e; -} -function pctDecChars(str) { - var newStr = ""; - var i = 0; - var il = str.length; - while (i < il) { - var c = parseInt(str.substr(i + 1, 2), 16); - if (c < 128) { - newStr += String.fromCharCode(c); - i += 3; - } else if (c >= 194 && c < 224) { - if (il - i >= 6) { - var c2 = parseInt(str.substr(i + 4, 2), 16); - newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); - } else { - newStr += str.substr(i, 6); - } - i += 6; - } else if (c >= 224) { - if (il - i >= 9) { - var _c = parseInt(str.substr(i + 4, 2), 16); - var c3 = parseInt(str.substr(i + 7, 2), 16); - newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); - } else { - newStr += str.substr(i, 9); - } - i += 9; - } else { - newStr += str.substr(i, 3); - i += 3; - } - } - return newStr; -} -function _normalizeComponentEncoding(components, protocol) { - function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(protocol.UNRESERVED) ? str : decStr; - } - if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); - if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - 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); - 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); - if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); - return components; -} - -function _stripLeadingZeros(str) { - return str.replace(/^0*(.*)/, "$1") || "0"; -} -function _normalizeIPv4(host, protocol) { - var matches = host.match(protocol.IPV4ADDRESS) || []; - - var _matches = slicedToArray(matches, 2), - address = _matches[1]; - - if (address) { - return address.split(".").map(_stripLeadingZeros).join("."); - } else { - return host; - } -} -function _normalizeIPv6(host, protocol) { - var matches = host.match(protocol.IPV6ADDRESS) || []; - - var _matches2 = slicedToArray(matches, 3), - address = _matches2[1], - zone = _matches2[2]; - - if (address) { - var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), - _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), - last = _address$toLowerCase$2[0], - first = _address$toLowerCase$2[1]; - - var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; - var lastFields = last.split(":").map(_stripLeadingZeros); - var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); - var fieldCount = isLastFieldIPv4Address ? 7 : 8; - var lastFieldsStart = lastFields.length - fieldCount; - var fields = Array(fieldCount); - for (var x = 0; x < fieldCount; ++x) { - fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; - } - if (isLastFieldIPv4Address) { - fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); - } - var allZeroFields = fields.reduce(function (acc, field, index) { - if (!field || field === "0") { - var lastLongest = acc[acc.length - 1]; - if (lastLongest && lastLongest.index + lastLongest.length === index) { - lastLongest.length++; - } else { - acc.push({ index: index, length: 1 }); - } - } - return acc; - }, []); - var longestZeroFields = allZeroFields.sort(function (a, b) { - return b.length - a.length; - })[0]; - var newHost = void 0; - if (longestZeroFields && longestZeroFields.length > 1) { - var newFirst = fields.slice(0, longestZeroFields.index); - var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); - newHost = newFirst.join(":") + "::" + newLast.join(":"); - } else { - newHost = fields.join(":"); - } - if (zone) { - newHost += "%" + zone; - } - return newHost; - } else { - return host; - } -} -var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; -var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; -function parse(uriString) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var components = {}; - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; - var matches = uriString.match(URI_PARSE); - if (matches) { - if (NO_MATCH_IS_UNDEFINED) { - //store each component - components.scheme = matches[1]; - components.userinfo = matches[3]; - components.host = matches[4]; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = matches[7]; - components.fragment = matches[8]; - //fix port number - if (isNaN(components.port)) { - components.port = matches[5]; - } - } else { - //IE FIX for improper RegExp matching - //store each component - components.scheme = matches[1] || undefined; - components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; - components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; - components.port = parseInt(matches[5], 10); - components.path = matches[6] || ""; - components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; - components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; - //fix port number - if (isNaN(components.port)) { - components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; - } - } - if (components.host) { - //normalize IP hosts - components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); - } - //determine reference type - if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { - components.reference = "same-document"; - } else if (components.scheme === undefined) { - components.reference = "relative"; - } else if (components.fragment === undefined) { - components.reference = "absolute"; - } else { - components.reference = "uri"; - } - //check for reference errors - if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { - components.error = components.error || "URI is not a " + options.reference + " reference."; - } - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //check if scheme can't handle IRIs - if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { - //if host component is a domain name - if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { - //convert Unicode IDN -> ASCII IDN - try { - components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; - } - } - //convert IRI -> URI - _normalizeComponentEncoding(components, URI_PROTOCOL); - } else { - //normalize encodings - _normalizeComponentEncoding(components, protocol); - } - //perform scheme specific parsing - if (schemeHandler && schemeHandler.parse) { - schemeHandler.parse(components, options); - } - } else { - components.error = components.error || "URI can not be parsed."; - } - return components; -} - -function _recomposeAuthority(components, options) { - var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - if (components.userinfo !== undefined) { - uriTokens.push(components.userinfo); - uriTokens.push("@"); - } - if (components.host !== undefined) { - //normalize IP hosts, add brackets and escape zone separator for IPv6 - uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { - return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; - })); - } - if (typeof components.port === "number") { - uriTokens.push(":"); - uriTokens.push(components.port.toString(10)); - } - return uriTokens.length ? uriTokens.join("") : undefined; -} - -var RDS1 = /^\.\.?\//; -var RDS2 = /^\/\.(\/|$)/; -var RDS3 = /^\/\.\.(\/|$)/; -var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; -function removeDotSegments(input) { - var output = []; - while (input.length) { - if (input.match(RDS1)) { - input = input.replace(RDS1, ""); - } else if (input.match(RDS2)) { - input = input.replace(RDS2, "/"); - } else if (input.match(RDS3)) { - input = input.replace(RDS3, "/"); - output.pop(); - } else if (input === "." || input === "..") { - input = ""; - } else { - var im = input.match(RDS5); - if (im) { - var s = im[0]; - input = input.slice(s.length); - output.push(s); - } else { - throw new Error("Unexpected dot segment condition"); - } - } - } - return output.join(""); -} - -function serialize(components) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; - var uriTokens = []; - //find scheme handler - var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; - //perform scheme specific serialization - if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); - if (components.host) { - //if host component is an IPv6 address - if (protocol.IPV6ADDRESS.test(components.host)) {} - //TODO: normalize IPv6 address as per RFC 5952 - - //if host component is a domain name - else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { - //convert IDN via punycode - try { - components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); - } catch (e) { - components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - } - } - //normalize encoding - _normalizeComponentEncoding(components, protocol); - if (options.reference !== "suffix" && components.scheme) { - uriTokens.push(components.scheme); - uriTokens.push(":"); - } - var authority = _recomposeAuthority(components, options); - if (authority !== undefined) { - if (options.reference !== "suffix") { - uriTokens.push("//"); - } - uriTokens.push(authority); - if (components.path && components.path.charAt(0) !== "/") { - uriTokens.push("/"); - } - } - if (components.path !== undefined) { - var s = components.path; - if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { - s = removeDotSegments(s); - } - if (authority === undefined) { - s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" - } - uriTokens.push(s); - } - if (components.query !== undefined) { - uriTokens.push("?"); - uriTokens.push(components.query); - } - if (components.fragment !== undefined) { - uriTokens.push("#"); - uriTokens.push(components.fragment); - } - return uriTokens.join(""); //merge tokens into a string -} - -function resolveComponents(base, relative) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var skipNormalization = arguments[3]; - - var target = {}; - if (!skipNormalization) { - base = parse(serialize(base, options), options); //normalize base components - relative = parse(serialize(relative, options), options); //normalize relative components - } - options = options || {}; - if (!options.tolerant && relative.scheme) { - target.scheme = relative.scheme; - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { - //target.authority = relative.authority; - target.userinfo = relative.userinfo; - target.host = relative.host; - target.port = relative.port; - target.path = removeDotSegments(relative.path || ""); - target.query = relative.query; - } else { - if (!relative.path) { - target.path = base.path; - if (relative.query !== undefined) { - target.query = relative.query; - } else { - target.query = base.query; - } - } else { - if (relative.path.charAt(0) === "/") { - target.path = removeDotSegments(relative.path); - } else { - if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { - target.path = "/" + relative.path; - } else if (!base.path) { - target.path = relative.path; - } else { - target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; - } - target.path = removeDotSegments(target.path); - } - target.query = relative.query; - } - //target.authority = base.authority; - target.userinfo = base.userinfo; - target.host = base.host; - target.port = base.port; - } - target.scheme = base.scheme; - } - target.fragment = relative.fragment; - return target; -} - -function resolve(baseURI, relativeURI, options) { - var schemelessOptions = assign({ scheme: 'null' }, options); - return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); -} - -function normalize(uri, options) { - if (typeof uri === "string") { - uri = serialize(parse(uri, options), options); - } else if (typeOf(uri) === "object") { - uri = parse(serialize(uri, options), options); - } - return uri; -} - -function equal(uriA, uriB, options) { - if (typeof uriA === "string") { - uriA = serialize(parse(uriA, options), options); - } else if (typeOf(uriA) === "object") { - uriA = serialize(uriA, options); - } - if (typeof uriB === "string") { - uriB = serialize(parse(uriB, options), options); - } else if (typeOf(uriB) === "object") { - uriB = serialize(uriB, options); - } - return uriA === uriB; -} - -function escapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); -} - -function unescapeComponent(str, options) { - return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); -} - -var handler = { - scheme: "http", - domainHost: true, - parse: function parse(components, options) { - //report missing host - if (!components.host) { - components.error = components.error || "HTTP URIs must have a host."; - } - return components; - }, - serialize: function serialize(components, options) { - //normalize the default port - if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { - components.port = undefined; - } - //normalize the empty path - if (!components.path) { - components.path = "/"; - } - //NOTE: We do not parse query strings for HTTP URIs - //as WWW Form Url Encoded query strings are part of the HTML4+ spec, - //and not the HTTP spec. - return components; - } -}; - -var handler$1 = { - scheme: "https", - domainHost: handler.domainHost, - parse: handler.parse, - serialize: handler.serialize -}; - -var O = {}; -var isIRI = true; -//RFC 3986 -var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; -var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive -var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded -//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = -//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) -//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext -//const VCHAR$$ = "[\\x21-\\x7E]"; -//const WSP$$ = "[\\x20\\x09]"; -//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext -//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); -//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); -//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); -var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; -var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; -var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); -var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; -var UNRESERVED = new RegExp(UNRESERVED$$, "g"); -var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); -var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); -var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); -var NOT_HFVALUE = NOT_HFNAME; -function decodeUnreserved(str) { - var decStr = pctDecChars(str); - return !decStr.match(UNRESERVED) ? str : decStr; -} -var handler$2 = { - scheme: "mailto", - parse: function parse$$1(components, options) { - var mailtoComponents = components; - var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; - mailtoComponents.path = undefined; - if (mailtoComponents.query) { - var unknownHeaders = false; - var headers = {}; - var hfields = mailtoComponents.query.split("&"); - for (var x = 0, xl = hfields.length; x < xl; ++x) { - var hfield = hfields[x].split("="); - switch (hfield[0]) { - case "to": - var toAddrs = hfield[1].split(","); - for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { - to.push(toAddrs[_x]); - } - break; - case "subject": - mailtoComponents.subject = unescapeComponent(hfield[1], options); - break; - case "body": - mailtoComponents.body = unescapeComponent(hfield[1], options); - break; - default: - unknownHeaders = true; - headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); - break; - } - } - if (unknownHeaders) mailtoComponents.headers = headers; - } - mailtoComponents.query = undefined; - for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { - var addr = to[_x2].split("@"); - addr[0] = unescapeComponent(addr[0]); - if (!options.unicodeSupport) { - //convert Unicode IDN -> ASCII IDN - try { - addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); - } catch (e) { - mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; - } - } else { - addr[1] = unescapeComponent(addr[1], options).toLowerCase(); - } - to[_x2] = addr.join("@"); - } - return mailtoComponents; - }, - serialize: function serialize$$1(mailtoComponents, options) { - var components = mailtoComponents; - var to = toArray(mailtoComponents.to); - if (to) { - for (var x = 0, xl = to.length; x < xl; ++x) { - var toAddr = String(to[x]); - var atIdx = toAddr.lastIndexOf("@"); - var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); - var domain = toAddr.slice(atIdx + 1); - //convert IDN via punycode - try { - domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); - } catch (e) { - components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; - } - to[x] = localPart + "@" + domain; - } - components.path = to.join(","); - } - var headers = mailtoComponents.headers = mailtoComponents.headers || {}; - if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; - if (mailtoComponents.body) headers["body"] = mailtoComponents.body; - var fields = []; - for (var name in headers) { - if (headers[name] !== O[name]) { - 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)); - } - } - if (fields.length) { - components.query = fields.join("&"); - } - return components; - } -}; - -var URN_PARSE = /^([^\:]+)\:(.*)/; -//RFC 2141 -var handler$3 = { - scheme: "urn", - parse: function parse$$1(components, options) { - var matches = components.path && components.path.match(URN_PARSE); - var urnComponents = components; - if (matches) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = matches[1].toLowerCase(); - var nss = matches[2]; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - urnComponents.nid = nid; - urnComponents.nss = nss; - urnComponents.path = undefined; - if (schemeHandler) { - urnComponents = schemeHandler.parse(urnComponents, options); - } - } else { - urnComponents.error = urnComponents.error || "URN can not be parsed."; - } - return urnComponents; - }, - serialize: function serialize$$1(urnComponents, options) { - var scheme = options.scheme || urnComponents.scheme || "urn"; - var nid = urnComponents.nid; - var urnScheme = scheme + ":" + (options.nid || nid); - var schemeHandler = SCHEMES[urnScheme]; - if (schemeHandler) { - urnComponents = schemeHandler.serialize(urnComponents, options); - } - var uriComponents = urnComponents; - var nss = urnComponents.nss; - uriComponents.path = (nid || options.nid) + ":" + nss; - return uriComponents; - } -}; - -var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; -//RFC 4122 -var handler$4 = { - scheme: "urn:uuid", - parse: function parse(urnComponents, options) { - var uuidComponents = urnComponents; - uuidComponents.uuid = uuidComponents.nss; - uuidComponents.nss = undefined; - if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { - uuidComponents.error = uuidComponents.error || "UUID is not valid."; - } - return uuidComponents; - }, - serialize: function serialize(uuidComponents, options) { - var urnComponents = uuidComponents; - //normalize UUID - urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); - return urnComponents; - } -}; - -SCHEMES[handler.scheme] = handler; -SCHEMES[handler$1.scheme] = handler$1; -SCHEMES[handler$2.scheme] = handler$2; -SCHEMES[handler$3.scheme] = handler$3; -SCHEMES[handler$4.scheme] = handler$4; - -exports.SCHEMES = SCHEMES; -exports.pctEncChar = pctEncChar; -exports.pctDecChars = pctDecChars; -exports.parse = parse; -exports.removeDotSegments = removeDotSegments; -exports.serialize = serialize; -exports.resolveComponents = resolveComponents; -exports.resolve = resolve; -exports.normalize = normalize; -exports.equal = equal; -exports.escapeComponent = escapeComponent; -exports.unescapeComponent = unescapeComponent; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=uri.all.js.map - - -/***/ }), -/* 731 */ -/***/ (function(module) { - -module.exports = {"name":"twitter-together","version":"2.1.1","description":"A GitHub action to tweet together using pull requests","main":"lib/index.js","scripts":{"build":"ncc build lib/index.js -o dist","coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,test}/**/*.js' 'docs/*.md' 'tweets/README.md' README.md package.json","lint:fix":"prettier --write '{lib,test}/**/*.js' 'docs/*.md' 'tweets/README.md' README.md package.json","test":"tap --branches=70 --functions=100 --lines=80 --statements=80 test/*/test.js","posttest":"npm run -s lint"},"keywords":[],"author":"","license":"MIT","dependencies":{"@actions/core":"1.9.1","@octokit/action":"^4.0.8","js-yaml":"^4.1.0","mime-types":"^2.1.35","parse-diff":"^0.9.0","twitter":"^1.7.1","twitter-text":"^3.1.0"},"devDependencies":{"@semantic-release/git":"^10.0.1","@zeit/ncc":"^0.22.0","nock":"^13.2.9","prettier":"^2.7.1","semantic-release":"^19.0.5","tap":"^16.3.0"},"repository":"github:twitter-together/action","release":{"branches":["+([0-9]).x","main","next",{"name":"beta","prerelease":true},{"name":"debug","prerelease":true}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/github",["@semantic-release/npm",{"npmPublish":false}],["@semantic-release/git",{"assets":["package.json","dist/index.js"],"message":"build(release): compiled action for ${nextRelease.version}\n\n[skip ci]"}]]}}; - -/***/ }), -/* 732 */, -/* 733 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = __webpack_require__(357); -var Buffer = __webpack_require__(726).Buffer; - -var ASN1 = __webpack_require__(362); -var errors = __webpack_require__(584); - - -// --- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -// --- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; -} - -Object.defineProperty(Reader.prototype, 'length', { - enumerable: true, - get: function () { return (this._len); } -}); - -Object.defineProperty(Reader.prototype, 'offset', { - enumerable: true, - get: function () { return (this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'remain', { - get: function () { return (this._size - this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'buffer', { - get: function () { return (this._buf.slice(this._offset)); } -}); - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function (peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function () { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function (offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) === 0x80) { - lenB &= 0x7f; - - if (lenB === 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function (tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function () { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function () { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function () { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function (tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return retbuf ? Buffer.alloc(0) : ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function (tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.readString(tag, true); - if (b === null) - return null; - - var values = []; - var value = 0; - - for (var i = 0; i < b.length; i++) { - var byte = b[i] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) === 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function (tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset]; - var value = 0; - - for (var i = 0; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) === 0x80 && i !== 4) - value -= (1 << (i * 8)); - - return value >> 0; -}; - - - -// --- Exported API - -module.exports = Reader; - - -/***/ }), -/* 734 */, -/* 735 */, -/* 736 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(78); -var gOPN = __webpack_require__(996).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 737 */, -/* 738 */, -/* 739 */ -/***/ (function(module, exports) { - -exports = module.exports = stringify -exports.getSerialize = serializer - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) -} - -function serializer(replacer, cycleReplacer) { - var stack = [], keys = [] - - if (cycleReplacer == null) cycleReplacer = function(key, value) { - if (stack[0] === value) return "[Circular ~]" - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this) - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) - } - else stack.push(value) - - return replacer == null ? value : replacer.call(this, key, value) - } -} - - -/***/ }), -/* 740 */ -/***/ (function(module) { - -module.exports = {"$id":"postData.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["mimeType"],"properties":{"mimeType":{"type":"string"},"text":{"type":"string"},"params":{"type":"array","required":["name"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"comment":{"type":"string"}}},"comment":{"type":"string"}}}; - -/***/ }), -/* 741 */ -/***/ (function(module) { - -"use strict"; - - -module.exports = function (data, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); - - var seen = []; - return (function stringify (node) { - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } - - if (node === undefined) return; - if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; - if (typeof node !== 'object') return JSON.stringify(node); - - var i, out; - if (Array.isArray(node)) { - out = '['; - for (i = 0; i < node.length; i++) { - if (i) out += ','; - out += stringify(node[i]) || 'null'; - } - return out + ']'; - } - - if (node === null) return 'null'; - - if (seen.indexOf(node) !== -1) { - if (cycles) return JSON.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } - - var seenIndex = seen.push(node) - 1; - var keys = Object.keys(node).sort(cmp && cmp(node)); - out = ''; - for (i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node[key]); - - if (!value) continue; - if (out) out += ','; - out += JSON.stringify(key) + ':' + value; - } - seen.splice(seenIndex, 1); - return '{' + out + '}'; - })(data); -}; - - -/***/ }), -/* 742 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.OidcClient = void 0; -const http_client_1 = __webpack_require__(425); -const auth_1 = __webpack_require__(554); -const core_1 = __webpack_require__(470); -class OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); - } - static getRequestToken() { - const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); - } - return token; - } - static getIDTokenUrl() { - const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; - if (!runtimeUrl) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); - } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient - .getJson(id_token_url) - .catch(error => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n - Error Message: ${error.result.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); - } - return id_token; - }); - } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - // New ID Token is requested from action service - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; - } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } - catch (error) { - throw new Error(`Error message: ${error.message}`); - } - }); - } -} -exports.OidcClient = OidcClient; -//# sourceMappingURL=oidc-utils.js.map - -/***/ }), -/* 743 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(569); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 744 */ -/***/ (function(module) { - -module.exports = {"$id":"page.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","id","title","pageTimings"],"properties":{"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"id":{"type":"string","unique":true},"title":{"type":"string"},"pageTimings":{"$ref":"pageTimings.json#"},"comment":{"type":"string"}}}; - -/***/ }), -/* 745 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validCCTLD = _interopRequireDefault(__webpack_require__(662)); - -var _validGTLD = _interopRequireDefault(__webpack_require__(79)); - -var _validPunycode = _interopRequireDefault(__webpack_require__(131)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validAsciiDomain = (0, _regexSupplant["default"])(/(?:(?:[\-a-z0-9#{latinAccentChars}]+)\.)+(?:#{validGTLD}|#{validCCTLD}|#{validPunycode})/gi, { - latinAccentChars: _latinAccentChars["default"], - validGTLD: _validGTLD["default"], - validCCTLD: _validCCTLD["default"], - validPunycode: _validPunycode["default"] -}); -var _default = validAsciiDomain; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 746 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = parseTweetFileContent; - -const EOL = __webpack_require__(87).EOL; - -const { existsSync } = __webpack_require__(747); -const { join } = __webpack_require__(622); -const { parseTweet } = __webpack_require__(914); -const { load } = __webpack_require__(186); - -const OPTION_REGEX = /^\(\s?\)\s+/; -const FRONT_MATTER_REGEX = new RegExp( - `^---[ \t]*${EOL}([\\s\\S]*?)${EOL}---[ \t]*(?:$|(?:${EOL})+)` -); - -function parseTweetFileContent(text, dir, isThread = false) { - const options = { - threadDelimiter: "---", - reply: null, - retweet: null, - media: [], - schedule: null, - poll: null, - thread: null, - }; - - // Extract front matter options - const frontMatterMatch = text.match(FRONT_MATTER_REGEX); - if (frontMatterMatch) { - text = text.slice(frontMatterMatch[0].length); - getOptionsFromFrontMatter(frontMatterMatch[1], options, dir); - - if (isThread) { - if (options.reply) - throw new Error("Cannot set a tweet to reply to when in a thread"); - } - } - - // Handle threading - if (options.threadDelimiter) { - const threadIdx = text.match( - new RegExp(`(?:${EOL})+${options.threadDelimiter}[ \t]*(?:${EOL})+`) - ); - if (threadIdx) { - const threadText = text.slice(threadIdx.index + threadIdx[0].length); - text = text.slice(0, threadIdx.index); - - // Each item can have front matter, as we only split one thread delimiter at a time - options.thread = parseTweetFileContent(threadText, dir, true); - } - } - - // Extract in-content options - if (!options.poll) { - const pollOptions = []; - let lastLine; - while ((lastLine = getlastLineMatchingPollOption(text))) { - pollOptions.push(lastLine.replace(OPTION_REGEX, "")); - text = withLastLineRemoved(text); - } - if (pollOptions.length) options.poll = pollOptions.reverse(); - } - - // Validate options - validateOptions(options, text, dir); - - // Parse tweet if has text - const parsed = text ? parseTweet(text) : { valid: true, weightedLength: 0 }; - if (!parsed.valid) - throw new Error( - `Tweet exceeds maximum length of 280 characters by ${ - parsed.weightedLength - 280 - } characters` - ); - - // TODO: Support schedule from options - return { - poll: options.poll, - media: options.media, - thread: options.thread, - reply: options.reply, - retweet: options.retweet, - text, - ...parsed, - }; -} - -function validateOptions(options, text, dir) { - if (options.retweet && !text && options.poll) - throw new Error("Cannot attach a poll to a retweet"); - - if (options.retweet && !text && options.reply) - throw new Error("Cannot reply to a tweet with a retweet"); - - if (options.retweet && !text && options.thread) - throw new Error("Cannot create a thread from a retweet"); - - if (options.retweet && !text && options.media && options.media.length) - throw new Error("Cannot attach media to a retweet"); - - if (options.poll && options.poll.length > 4) - throw new Error( - `Polls cannot have more than four options, found ${options.poll.length} options` - ); - - if (options.poll && options.poll.length < 2) - throw new Error( - `Polls must have at least two options, found ${options.poll.length} options` - ); - - if (options.media) { - for (const media of options.media) { - if (media.file.indexOf(join(dir, "media")) !== 0) - throw new Error(`Media file should be within the media directory`); - - if (!existsSync(media.file)) - throw new Error(`Media file ${media.file} does not exist`); - - if (media.alt && media.alt.length > 1000) - throw new Error( - `Media alt text must be 1000 characters or less, found length ${media.alt.length}` - ); - } - } -} - -function getOptionsFromFrontMatter(frontMatter, options, dir) { - const parsedFrontMatter = load(frontMatter); - if (typeof parsedFrontMatter !== "object" || !parsedFrontMatter) return; - - if (typeof parsedFrontMatter["thread-delimiter"] === "string") - options.threadDelimiter = parsedFrontMatter["thread-delimiter"]; - if (typeof parsedFrontMatter.reply === "string") - options.reply = parsedFrontMatter.reply; - if (typeof parsedFrontMatter.retweet === "string") - options.retweet = parsedFrontMatter.retweet; - - if (Array.isArray(parsedFrontMatter.media)) - options.media = parsedFrontMatter.media.reduce((arr, item) => { - if (item && typeof item === "object" && typeof item.file === "string") - arr.push({ - file: join(dir, "media", item.file), - alt: typeof item.alt !== "string" ? null : item.alt, - }); - return arr; - }, []); - - if (typeof parsedFrontMatter.schedule === "string") { - const schedule = new Date(parsedFrontMatter.schedule); - if (!isNaN(schedule.getTime())) options.schedule = schedule; - } - - if (Array.isArray(parsedFrontMatter.poll)) - options.poll = parsedFrontMatter.poll.reduce((arr, item) => { - if (typeof item === "string") arr.push(item); - return arr; - }, []); -} - -function getlastLineMatchingPollOption(text) { - const lines = text.trim().split(EOL); - const [lastLine] = lines.reverse(); - return OPTION_REGEX.test(lastLine) ? lastLine : null; -} - -function withLastLineRemoved(text) { - const lines = text.trim().split(EOL); - return lines - .slice(0, lines.length - 1) - .join(EOL) - .trim(); -} - - -/***/ }), -/* 747 */ -/***/ (function(module) { - -module.exports = require("fs"); - -/***/ }), -/* 748 */, -/* 749 */, -/* 750 */ -/***/ (function(module) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 751 */ -/***/ (function(module) { - -"use strict"; - - -var conversions = {}; -module.exports = conversions; - -function sign(x) { - return x < 0 ? -1 : 1; -} - -function evenRound(x) { - // Round x to the nearest integer, choosing the even integer if it lies halfway between two. - if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) - return Math.floor(x); - } else { - return Math.round(x); - } -} - -function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; - } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; - - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); - - return function(V, opts) { - if (!opts) opts = {}; - - let x = +V; - - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite number"); - } - - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError("Argument is not in byte range"); - } - - return x; - } - - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); - - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } - - if (!Number.isFinite(x) || x === 0) { - return 0; - } - - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; - - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { // don't return negative zero - return 0; - } - } - - return x; - } -} - -conversions["void"] = function () { - return undefined; -}; - -conversions["boolean"] = function (val) { - return !!val; -}; - -conversions["byte"] = createNumberConversion(8, { unsigned: false }); -conversions["octet"] = createNumberConversion(8, { unsigned: true }); - -conversions["short"] = createNumberConversion(16, { unsigned: false }); -conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); - -conversions["long"] = createNumberConversion(32, { unsigned: false }); -conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); - -conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); -conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); - -conversions["double"] = function (V) { - const x = +V; - - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite floating-point value"); - } - - return x; -}; - -conversions["unrestricted double"] = function (V) { - const x = +V; - - if (isNaN(x)) { - throw new TypeError("Argument is NaN"); - } - - return x; -}; - -// not quite valid, but good enough for JS -conversions["float"] = conversions["double"]; -conversions["unrestricted float"] = conversions["unrestricted double"]; - -conversions["DOMString"] = function (V, opts) { - if (!opts) opts = {}; - - if (opts.treatNullAsEmptyString && V === null) { - return ""; - } - - return String(V); -}; - -conversions["ByteString"] = function (V, opts) { - const x = String(V); - let c = undefined; - for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { - if (c > 255) { - throw new TypeError("Argument is not a valid bytestring"); - } - } - - return x; -}; - -conversions["USVString"] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 0xD800 || c > 0xDFFF) { - U.push(String.fromCodePoint(c)); - } else if (0xDC00 <= c && c <= 0xDFFF) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - if (i === n - 1) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - const d = S.charCodeAt(i + 1); - if (0xDC00 <= d && d <= 0xDFFF) { - const a = c & 0x3FF; - const b = d & 0x3FF; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(0xFFFD)); - } - } - } - } - - return U.join(''); -}; - -conversions["Date"] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError("Argument is not a Date object"); - } - if (isNaN(V)) { - return undefined; - } - - return V; -}; - -conversions["RegExp"] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); - } - - return V; -}; - - -/***/ }), -/* 752 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -// 21.2.5.3 get RegExp.prototype.flags() -if (__webpack_require__(843) && /./g.flags != 'g') __webpack_require__(973).f(RegExp.prototype, 'flags', { - configurable: true, - get: __webpack_require__(788) -}); - - -/***/ }), -/* 753 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Modified version of RFC 3986 Appendix B -var validateUrlUnencoded = (0, _regexSupplant["default"])('^' + // Full URL -'(?:' + '([^:/?#]+):\\/\\/' + // $1 Scheme -')?' + '([^/?#]*)' + // $2 Authority -'([^?#]*)' + // $3 Path -'(?:' + '\\?([^#]*)' + // $4 Query -')?' + '(?:' + '#(.*)' + // $5 Fragment -')?$', 'i'); -var _default = validateUrlUnencoded; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 754 */, -/* 755 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var YAMLException = __webpack_require__(652); - -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'multi', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'representName', - 'defaultStyle', - 'styleAliases' -]; - -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; - -function compileStyleAliases(map) { - var result = {}; - - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); - } - - return result; -} - -function Type(tag, options) { - options = options || {}; - - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - - // TODO: Add tag format check. - this.options = options; // keep original options in case user wants to extend this type later - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.representName = options['representName'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.multi = options['multi'] || false; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } -} - -module.exports = Type; - - -/***/ }), -/* 756 */, -/* 757 */, -/* 758 */ -/***/ (function(module) { - -module.exports = {"$id":"timings.json#","$schema":"http://json-schema.org/draft-06/schema#","required":["send","wait","receive"],"properties":{"dns":{"type":"number","min":-1},"connect":{"type":"number","min":-1},"blocked":{"type":"number","min":-1},"send":{"type":"number","min":-1},"wait":{"type":"number","min":-1},"receive":{"type":"number","min":-1},"ssl":{"type":"number","min":-1},"comment":{"type":"string"}}}; - -/***/ }), -/* 759 */, -/* 760 */, -/* 761 */ -/***/ (function(module) { - -module.exports = require("zlib"); - -/***/ }), -/* 762 */, -/* 763 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var codePoint = /(?:[^\uD800-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF])/; -var _default = codePoint; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 764 */ -/***/ (function(module) { - -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - "default": obj - }; -} - -module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; - -/***/ }), -/* 765 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) -var $export = __webpack_require__(195); - -$export($export.S, 'Array', { isArray: __webpack_require__(676) }); - - -/***/ }), -/* 766 */, -/* 767 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var astralNumerals = /\ud801[\udca0-\udca9]|\ud804[\udc66-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udef0-\udef9]|\ud805[\udcd0-\udcd9\ude50-\ude59\udec0-\udec9]|\ud806[\udce0-\udce9]|\ud81a[\ude60-\ude69\udf50-\udf59]|\ud835[\udfce-\udfff]/; -var _default = astralNumerals; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 768 */, -/* 769 */, -/* 770 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -__webpack_require__(277); - -__webpack_require__(549); - -var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); - -var _validReply = _interopRequireDefault(__webpack_require__(183)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text) { - return null; - } - - var possibleScreenName = text.match(_validReply["default"]); - - if (!possibleScreenName || RegExp.rightContext.match(_endMentionMatch["default"])) { - return null; - } - - return possibleScreenName[1]; -} - -module.exports = exports.default; - -/***/ }), -/* 771 */, -/* 772 */ -/***/ (function(module) { - -"use strict"; - -module.exports = function generate__limitLength(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), -/* 773 */, -/* 774 */, -/* 775 */, -/* 776 */ -/***/ (function(module) { - -module.exports = {"$id":"creator.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}; - -/***/ }), -/* 777 */, -/* 778 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -var Type = __webpack_require__(755); - -module.exports = new Type('tag:yaml.org,2002:map', { - kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } -}); - - -/***/ }), -/* 779 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -// https://github.com/tc39/proposal-object-getownpropertydescriptors -var $export = __webpack_require__(195); -var ownKeys = __webpack_require__(695); -var toIObject = __webpack_require__(78); -var gOPD = __webpack_require__(321); -var createProperty = __webpack_require__(393); - -$export($export.S, 'Object', { - getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { - var O = toIObject(object); - var getDesc = gOPD.f; - var keys = ownKeys(O); - var result = {}; - var i = 0; - var key, desc; - while (keys.length > i) { - desc = getDesc(O, key = keys[i++]); - if (desc !== undefined) createProperty(result, key, desc); - } - return result; - } -}); - - -/***/ }), -/* 780 */, -/* 781 */, -/* 782 */, -/* 783 */ -/***/ (function(module) { - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; - -/***/ }), -/* 784 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = __webpack_require__(794); -} else { - module.exports = __webpack_require__(81); -} - - -/***/ }), -/* 785 */, -/* 786 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(78); -var toLength = __webpack_require__(853); -var toAbsoluteIndex = __webpack_require__(85); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 787 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(348)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities) { - (0, _convertUnicodeIndices["default"])(text, entities, false); -} - -module.exports = exports.default; - -/***/ }), -/* 788 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - -// 21.2.5.3 get RegExp.prototype.flags -var anObject = __webpack_require__(990); -module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; -}; - - -/***/ }), -/* 789 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 9.4.2.3 ArraySpeciesCreate(originalArray, length) -var speciesConstructor = __webpack_require__(807); - -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); -}; - - -/***/ }), -/* 790 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); - -var _validateUrlHost = _interopRequireDefault(__webpack_require__(612)); - -var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlAuthority = (0, _regexSupplant["default"])( // $1 userinfo -'(?:(#{validateUrlUserinfo})@)?' + // $2 host -'(#{validateUrlHost})' + // $3 port -'(?::(#{validateUrlPort}))?', { - validateUrlUserinfo: _validateUrlUserinfo["default"], - validateUrlHost: _validateUrlHost["default"], - validateUrlPort: _validateUrlPort["default"] -}, 'i'); -var _default = validateUrlAuthority; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 791 */, -/* 792 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = __webpack_require__(669) - , Agent = __webpack_require__(605).Agent - , net = __webpack_require__(631) - , tls = __webpack_require__(16) - , AgentSSL = __webpack_require__(211).Agent - -function getConnectionName(host, port) { - var name = '' - if (typeof host === 'string') { - name = host + ':' + port - } else { - // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name. - name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':') - } - return name -} - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = getConnectionName(host, port) - - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = getConnectionName(host, port) - - if (typeof host !== 'string') { - var options = host - port = options.port - host = options.host - } - - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} - - -/***/ }), -/* 793 */, -/* 794 */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ -function log(...args) { - // This hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return typeof console === 'object' && - console.log && - console.log(...args); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = __webpack_require__(486)(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; - - -/***/ }), -/* 795 */, -/* 796 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - - return ""; -} - -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 797 */, -/* 798 */, -/* 799 */, -/* 800 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validUrlQueryEndingChars = /[a-z0-9\-_&=#\/]/i; -var _default = validUrlQueryEndingChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 801 */, -/* 802 */ -/***/ (function(module) { - -module.exports = setup; - -async function setup({ toolkit, octokit, payload, sha }) { - toolkit.info('Checking if "twitter-together-setup" branch exists already'); - - try { - // Check if "twitter-together-setup" branch exists - // https://developer.github.com/v3/git/refs/#get-a-reference - await octokit.request("HEAD /repos/:owner/:repo/git/refs/:ref", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - ref: "heads/twitter-together-setup", - request: { - expectStatus: 404, - }, - }); - - // If it does, the script assumes that the setup pull requset already exists - // and stops here - return toolkit.info('"twitter-together-setup" branch already exists'); - } catch (error) { - toolkit.info('"twitter-together-setup" branch does not yet exist'); - } - - // Create the "twitter-together-setup" branch - // https://developer.github.com/v3/git/refs/#create-a-reference - await octokit.request("POST /repos/:owner/:repo/git/refs", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - ref: "refs/heads/twitter-together-setup", - sha, - }); - toolkit.info('"twitter-together-setup" branch created'); - - // Create tweets/README.md from same file in twitter-together/action repo - // https://developer.github.com/v3/repos/contents/#get-contents - const { data: readmeContent } = await octokit.request( - "GET /repos/:owner/:repo/contents/:path", - { - mediaType: { - format: "raw", - }, - owner: "twitter-together", - repo: "action", - path: "tweets/README.md", - } - ); - // https://developer.github.com/v3/repos/contents/#create-or-update-a-file - await octokit.request("PUT /repos/:owner/:repo/contents/:path", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - path: "tweets/README.md", - content: Buffer.from(readmeContent).toString("base64"), - branch: "twitter-together-setup", - message: "twitter-together setup", - }); - toolkit.info('"tweets/README.md" created in "twitter-together-setup" branch'); - - // Create pull request - // https://developer.github.com/v3/pulls/#create-a-pull-request - const { data: pr } = await octokit.request("POST /repos/:owner/:repo/pulls", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - title: "🐦 twitter-together setup", - body: `This pull request creates the \`tweets/\` folder where your \`*.tweet\` files go into. It also creates the \`tweets/README.md\` file with instructions. - -Note that if you plan to support tweets with polls, your app has to be approved for Twitter's Ads API. See [the Ads API Application Form](https://github.com/twitter-together/action/blob/main/docs/03-apply-for-access-to-the-twitter-ads-api.md) documentation for more details. - -Enjoy!`, - head: "twitter-together-setup", - base: payload.repository.default_branch, - }); - toolkit.info(`Setup pull request created: ${pr.html_url}`); -} - - -/***/ }), -/* 803 */, -/* 804 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _v = _interopRequireDefault(__webpack_require__(136)); - -var _sha = _interopRequireDefault(__webpack_require__(329)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports.default = _default; - -/***/ }), -/* 805 */ -/***/ (function(module) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 806 */, -/* 807 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var isObject = __webpack_require__(956); -var isArray = __webpack_require__(676); -var SPECIES = __webpack_require__(621)('species'); - -module.exports = function (original) { - var C; - if (isArray(original)) { - C = original.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? Array : C; -}; - - -/***/ }), -/* 808 */, -/* 809 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - -"use strict"; - - -var anObject = __webpack_require__(990); -var toObject = __webpack_require__(230); -var toLength = __webpack_require__(853); -var toInteger = __webpack_require__(43); -var advanceStringIndex = __webpack_require__(215); -var regExpExec = __webpack_require__(319); -var max = Math.max; -var min = Math.min; -var floor = Math.floor; -var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; -var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; - -var maybeToString = function (it) { - return it === undefined ? it : String(it); -}; - -// @@replace logic -__webpack_require__(35)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { - return [ - // `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = defined(this); - var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; - return fn !== undefined - ? fn.call(searchValue, O, replaceValue) - : $replace.call(String(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - var res = maybeCallNative($replace, regexp, this, replaceValue); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - var global = rx.global; - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - var results = []; - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - results.push(result); - if (!global) break; - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - return accumulatedResult + S.slice(nextSourcePosition); - } - ]; - - // https://tc39.github.io/ecma262/#sec-getsubstitution - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return $replace.call(replacement, symbols, function (match, ch) { - var capture; - switch (ch.charAt(0)) { - case '$': return '$'; - case '&': return matched; - case '`': return str.slice(0, position); - case "'": return str.slice(tailPos); - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - } -}); - - -/***/ }), -/* 810 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -var _rng = _interopRequireDefault(__webpack_require__(506)); - -var _stringify = _interopRequireDefault(__webpack_require__(960)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || (0, _stringify.default)(b); -} - -var _default = v1; -exports.default = _default; - -/***/ }), -/* 811 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(333); -var gOPS = __webpack_require__(243); -var pIE = __webpack_require__(632); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 812 */, -/* 813 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; -const REGEX_IS_INSTALLATION = /^ghs_/; -const REGEX_IS_USER_TO_SERVER = /^ghu_/; -async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token: token, - tokenType - }; -} - -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - - return `token ${token}`; -} - -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} - -const createTokenAuth = function createTokenAuth(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; - -exports.createTokenAuth = createTokenAuth; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 814 */ -/***/ (function(module) { - -function HARError (errors) { - var message = 'validation failed' - - this.name = 'HARError' - this.message = message - this.errors = errors - - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, this.constructor) - } else { - this.stack = (new Error(message)).stack - } -} - -HARError.prototype = Error.prototype - -module.exports = HARError - - -/***/ }), -/* 815 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -module.exports = handlePullRequest; - -const getNewTweets = __webpack_require__(432); -const createCheckRun = __webpack_require__(219); - -async function handlePullRequest(state) { - const { octokit, toolkit, payload } = state; - - // ignore builds from branches other than the repository’s defaul branch - const base = payload.pull_request.base.ref; - const defaultBranch = payload.repository.default_branch; - if (defaultBranch !== base) { - return toolkit.info( - `Pull request base "${base}" is not the repository’s default branch` - ); - } - - // on request errors, log the requset options and error, then end process - octokit.hook.error("request", (error) => { - toolkit.info(error); - toolkit.setFailed(error.stack); - process.exit(); - }); - - const newTweets = await getNewTweets(state); - await createCheckRun(state, newTweets); -} - - -/***/ }), -/* 816 */, -/* 817 */, -/* 818 */, -/* 819 */, -/* 820 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -var isObject = __webpack_require__(956); -var anObject = __webpack_require__(990); -var check = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line - function (test, buggy, set) { - try { - set = __webpack_require__(743)(Function.call, __webpack_require__(321).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { buggy = true; } - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto; - else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check -}; - - -/***/ }), -/* 821 */, -/* 822 */, -/* 823 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; - -var _invalidDomainChars = _interopRequireDefault(__webpack_require__(265)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validDomainChars = (0, _regexSupplant["default"])(/[^#{invalidDomainChars}]/, { - invalidDomainChars: _invalidDomainChars["default"] -}); -var _default = validDomainChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), -/* 824 */, -/* 825 */, -/* 826 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -var rng = __webpack_require__(139); -var bytesToUuid = __webpack_require__(347); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; - - -/***/ }), -/* 827 */, -/* 828 */, -/* 829 */, -/* 830 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _splitTags = _interopRequireDefault(__webpack_require__(459)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, hits, options) { - var defaultHighlightTag = 'em'; - hits = hits || []; - options = options || {}; - - if (hits.length === 0) { - return text; - } - - var tagName = options.tag || defaultHighlightTag, - tags = ["<".concat(tagName, ">"), "")], - chunks = (0, _splitTags["default"])(text), - i, - j, - result = '', - chunkIndex = 0, - chunk = chunks[0], - prevChunksLen = 0, - chunkCursor = 0, - startInChunk = false, - chunkChars = chunk, - flatHits = [], - index, - hit, - tag, - placed, - hitSpot; - - for (i = 0; i < hits.length; i += 1) { - for (j = 0; j < hits[i].length; j += 1) { - flatHits.push(hits[i][j]); - } - } - - for (index = 0; index < flatHits.length; index += 1) { - hit = flatHits[index]; - tag = tags[index % 2]; - placed = false; - - while (chunk != null && hit >= prevChunksLen + chunk.length) { - result += chunkChars.slice(chunkCursor); - - if (startInChunk && hit === prevChunksLen + chunkChars.length) { - result += tag; - placed = true; - } - - if (chunks[chunkIndex + 1]) { - result += "<".concat(chunks[chunkIndex + 1], ">"); - } - - prevChunksLen += chunkChars.length; - chunkCursor = 0; - chunkIndex += 2; - chunk = chunks[chunkIndex]; - chunkChars = chunk; - startInChunk = false; - } - - if (!placed && chunk != null) { - hitSpot = hit - prevChunksLen; - result += chunkChars.slice(chunkCursor, hitSpot) + tag; - chunkCursor = hitSpot; - - if (index % 2 === 0) { - startInChunk = true; - } else { - startInChunk = false; - } - } else if (!placed) { - placed = true; - result += tag; - } - } - - if (chunk != null) { - if (chunkCursor < chunkChars.length) { - result += chunkChars.slice(chunkCursor); - } - - for (index = chunkIndex + 1; index < chunks.length; index += 1) { - result += index % 2 === 0 ? chunks[index] : "<".concat(chunks[index], ">"); - } - } - - return result; -} - -module.exports = exports.default; - -/***/ }), -/* 831 */, -/* 832 */, -/* 833 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__(764); - -__webpack_require__(493); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; - -var _clone = _interopRequireDefault(__webpack_require__(582)); - -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); - -var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); - -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var cashtag = (0, _htmlEscape["default"])(entity.cashtag); - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs.href = options.cashtagUrlBase + cashtag; - attrs.title = "$".concat(cashtag); - attrs['class'] = options.cashtagClass; - - if (options.targetBlank) { - attrs.target = '_blank'; - } - - return (0, _linkToTextWithSymbol["default"])(entity, '$', cashtag, attrs, options); -} - -module.exports = exports.default; - -/***/ }), -/* 834 */, -/* 835 */ -/***/ (function(module) { - -module.exports = require("url"); - -/***/ }), -/* 836 */, -/* 837 */, -/* 838 */, -/* 839 */, -/* 840 */, -/* 841 */ -/***/ (function(module) { - -module.exports = {"$id":"header.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}; - -/***/ }), -/* 842 */ -/***/ (function(__unusedmodule, exports) { - -"use strict"; - - -Object.defineProperty(exports, '__esModule', { value: true }); - -const Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], - addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], - deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], - deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], - getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], - getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { - renamed: ["actions", "getGithubActionsPermissionsRepository"] - }], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], - listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], - listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], - listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], - removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], - setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], - setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"] - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] - }, - apps: { - addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] - }], - addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], - removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] - }], - removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], - updateWebhookConfigForApp: ["PATCH /app/hook/config"] - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"], - getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] - }, - codeScanning: { - deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], - getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { - renamedParameters: { - alert_id: "alert_number" - } - }], - getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { - renamed: ["codeScanning", "listAlertInstances"] - }], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"] - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], - createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], - createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], - exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], - getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], - listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: ["GET /orgs/{org}/codespaces", {}, { - renamedParameters: { - org_id: "org" - } - }], - listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], - removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], - setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] - }, - dependabot: { - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] - }, - dependencyGraph: { - createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], - diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] - }, - emojis: { - get: ["GET /emojis"] - }, - enterpriseAdmin: { - addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], - getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], - getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"], - listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], - removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"], - setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], - setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"] - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { - renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] - }], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { - renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] - }], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { - renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] - }] - }, - issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"] - }, - markdown: { - render: ["POST /markdown"], - renderRaw: ["POST /markdown/raw", { - headers: { - "content-type": "text/plain; charset=utf-8" - } - }] - }, - meta: { - get: ["GET /meta"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"] - }, - migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { - renamed: ["migrations", "listReposForAuthenticatedUser"] - }], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], - updateImport: ["PATCH /repos/{owner}/{repo}/import"] - }, - orgs: { - addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], - createCustomRole: ["POST /orgs/{org}/custom_roles"], - createInvitation: ["POST /orgs/{org}/invitations"], - createWebhook: ["POST /orgs/{org}/hooks"], - deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"], - get: ["GET /orgs/{org}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], - removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] - }, - packages: { - deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], - deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], - deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], - deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] - }], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] - }], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], - getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], - getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], - getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], - getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], - createCard: ["POST /projects/columns/{column_id}/cards"], - createColumn: ["POST /projects/{project_id}/columns"], - createForAuthenticatedUser: ["POST /user/projects"], - createForOrg: ["POST /orgs/{org}/projects"], - createForRepo: ["POST /repos/{owner}/{repo}/projects"], - delete: ["DELETE /projects/{project_id}"], - deleteCard: ["DELETE /projects/columns/cards/{card_id}"], - deleteColumn: ["DELETE /projects/columns/{column_id}"], - get: ["GET /projects/{project_id}"], - getCard: ["GET /projects/columns/cards/{card_id}"], - getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], - listCards: ["GET /projects/columns/{column_id}/cards"], - listCollaborators: ["GET /projects/{project_id}/collaborators"], - listColumns: ["GET /projects/{project_id}/columns"], - listForOrg: ["GET /orgs/{org}/projects"], - listForRepo: ["GET /repos/{owner}/{repo}/projects"], - listForUser: ["GET /users/{username}/projects"], - moveCard: ["POST /projects/columns/cards/{card_id}/moves"], - moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], - update: ["PATCH /projects/{project_id}"], - updateCard: ["PATCH /projects/columns/cards/{card_id}"], - updateColumn: ["PATCH /projects/columns/{column_id}"] - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] - }, - rateLimit: { - get: ["GET /rate_limit"] - }, - reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], - createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], - deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], - deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], - deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], - deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], - deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], - deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], - deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], - listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] - }, - repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "acceptInvitationForAuthenticatedUser"] - }], - acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], - createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "declineInvitationForAuthenticatedUser"] - }], - declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], - deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], - disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], - downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { - renamed: ["repos", "downloadZipballArchive"] - }], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], - enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], - generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], - getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], - listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], - removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { - renamed: ["repos", "updateStatusCheckProtection"] - }], - updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { - baseUrl: "https://uploads.github.com" - }] - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"] - }, - secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] - }, - teams: { - addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], - addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: ["POST /user/emails", {}, { - renamed: ["users", "addEmailForAuthenticatedUser"] - }], - addEmailForAuthenticatedUser: ["POST /user/emails"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { - renamed: ["users", "createGpgKeyForAuthenticatedUser"] - }], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { - renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] - }], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { - renamed: ["users", "deleteEmailForAuthenticatedUser"] - }], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] - }], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { - renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] - }], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "getGpgKeyForAuthenticatedUser"] - }], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { - renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] - }], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks", {}, { - renamed: ["users", "listBlockedByAuthenticatedUser"] - }], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails", {}, { - renamed: ["users", "listEmailsForAuthenticatedUser"] - }], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following", {}, { - renamed: ["users", "listFollowedByAuthenticatedUser"] - }], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { - renamed: ["users", "listGpgKeysForAuthenticatedUser"] - }], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { - renamed: ["users", "listPublicEmailsForAuthenticatedUser"] - }], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { - renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] - }], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { - renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] - }], - setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] - } -}; - -const VERSION = "6.6.2"; - -function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; - - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ - method, - url - }, defaults); - - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - - const scopeMethods = newMethods[scope]; - - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } - - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); - } - } - - return newMethods; -} - -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ - - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` - - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: undefined - }); - return requestWithDefaults(options); - } - - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); - - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); - - if (!(alias in options)) { - options[alias] = options[name]; - } - - delete options[name]; - } - } - - return requestWithDefaults(options); - } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - - - return requestWithDefaults(...args); - } - - return Object.assign(withDecorations, requestWithDefaults); -} - -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); - return { - rest: api - }; -} -restEndpointMethods.VERSION = VERSION; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); - return { ...api, - rest: api - }; -} -legacyRestEndpointMethods.VERSION = VERSION; - -exports.legacyRestEndpointMethods = legacyRestEndpointMethods; -exports.restEndpointMethods = restEndpointMethods; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 843 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(971)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 844 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -/*eslint-disable no-use-before-define*/ - -var common = __webpack_require__(701); -var YAMLException = __webpack_require__(652); -var DEFAULT_SCHEMA = __webpack_require__(344); - -var _toString = Object.prototype.toString; -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -var CHAR_BOM = 0xFEFF; -var CHAR_TAB = 0x09; /* Tab */ -var CHAR_LINE_FEED = 0x0A; /* LF */ -var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ -var CHAR_SPACE = 0x20; /* Space */ -var CHAR_EXCLAMATION = 0x21; /* ! */ -var CHAR_DOUBLE_QUOTE = 0x22; /* " */ -var CHAR_SHARP = 0x23; /* # */ -var CHAR_PERCENT = 0x25; /* % */ -var CHAR_AMPERSAND = 0x26; /* & */ -var CHAR_SINGLE_QUOTE = 0x27; /* ' */ -var CHAR_ASTERISK = 0x2A; /* * */ -var CHAR_COMMA = 0x2C; /* , */ -var CHAR_MINUS = 0x2D; /* - */ -var CHAR_COLON = 0x3A; /* : */ -var CHAR_EQUALS = 0x3D; /* = */ -var CHAR_GREATER_THAN = 0x3E; /* > */ -var CHAR_QUESTION = 0x3F; /* ? */ -var CHAR_COMMERCIAL_AT = 0x40; /* @ */ -var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ -var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ -var CHAR_GRAVE_ACCENT = 0x60; /* ` */ -var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ -var CHAR_VERTICAL_LINE = 0x7C; /* | */ -var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ - -var ESCAPE_SEQUENCES = {}; - -ESCAPE_SEQUENCES[0x00] = '\\0'; -ESCAPE_SEQUENCES[0x07] = '\\a'; -ESCAPE_SEQUENCES[0x08] = '\\b'; -ESCAPE_SEQUENCES[0x09] = '\\t'; -ESCAPE_SEQUENCES[0x0A] = '\\n'; -ESCAPE_SEQUENCES[0x0B] = '\\v'; -ESCAPE_SEQUENCES[0x0C] = '\\f'; -ESCAPE_SEQUENCES[0x0D] = '\\r'; -ESCAPE_SEQUENCES[0x1B] = '\\e'; -ESCAPE_SEQUENCES[0x22] = '\\"'; -ESCAPE_SEQUENCES[0x5C] = '\\\\'; -ESCAPE_SEQUENCES[0x85] = '\\N'; -ESCAPE_SEQUENCES[0xA0] = '\\_'; -ESCAPE_SEQUENCES[0x2028] = '\\L'; -ESCAPE_SEQUENCES[0x2029] = '\\P'; - -var DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -]; - -var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; - -function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type; - - if (map === null) return {}; - - result = {}; - keys = Object.keys(map); - - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); - - if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2); - } - type = schema.compiledTypeMap['fallback'][tag]; - - if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style]; - } - - result[tag] = style; - } - - return result; -} - -function encodeHex(character) { - var string, handle, length; - - string = character.toString(16).toUpperCase(); - - if (character <= 0xFF) { - handle = 'x'; - length = 2; - } else if (character <= 0xFFFF) { - handle = 'u'; - length = 4; - } else if (character <= 0xFFFFFFFF) { - handle = 'U'; - length = 8; - } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); - } - - return '\\' + handle + common.repeat('0', length - string.length) + string; -} - - -var QUOTING_TYPE_SINGLE = 1, - QUOTING_TYPE_DOUBLE = 2; - -function State(options) { - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.indent = Math.max(1, (options['indent'] || 2)); - this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; - this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options['forceQuotes'] || false; - this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; - - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; - - this.tag = null; - this.result = ''; - - this.duplicates = []; - this.usedDuplicates = null; -} - -// Indents every line in a string. Empty lines (\n only) are not indented. -function indentString(string, spaces) { - var ind = common.repeat(' ', spaces), - position = 0, - next = -1, - result = '', - line, - length = string.length; - - while (position < length) { - next = string.indexOf('\n', position); - if (next === -1) { - line = string.slice(position); - position = length; - } else { - line = string.slice(position, next + 1); - position = next + 1; - } - - if (line.length && line !== '\n') result += ind; - - result += line; - } - - return result; -} - -function generateNextLine(state, level) { - return '\n' + common.repeat(' ', state.indent * level); -} - -function testImplicitResolving(state, str) { - var index, length, type; - - for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { - type = state.implicitTypes[index]; - - if (type.resolve(str)) { - return true; - } - } - - return false; -} - -// [33] s-white ::= s-space | s-tab -function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; -} - -// Returns true if the character can be printed without escaping. -// From YAML 1.2: "any allowed characters known to be non-printable -// should also be escaped. [However,] This isn’t mandatory" -// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) - || (0x10000 <= c && c <= 0x10FFFF); -} - -// [34] ns-char ::= nb-char - s-white -// [27] nb-char ::= c-printable - b-char - c-byte-order-mark -// [26] b-char ::= b-line-feed | b-carriage-return -// Including s-white (for some reason, examples doesn't match specs in this aspect) -// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark -function isNsCharOrWhitespace(c) { - return isPrintable(c) - && c !== CHAR_BOM - // - b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; -} - -// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out -// c = flow-in ⇒ ns-plain-safe-in -// c = block-key ⇒ ns-plain-safe-out -// c = flow-key ⇒ ns-plain-safe-in -// [128] ns-plain-safe-out ::= ns-char -// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator -// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) -// | ( /* An ns-char preceding */ “#” ) -// | ( “:” /* Followed by an ns-plain-safe(c) */ ) -function isPlainSafe(c, prev, inblock) { - var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); - var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); - return ( - // ns-plain-safe - inblock ? // c = flow-in - cIsNsCharOrWhitespace - : cIsNsCharOrWhitespace - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - ) - // ns-plain-char - && c !== CHAR_SHARP // false on '#' - && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' - || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' - || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' -} - -// Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst(c) { - // Uses a subset of ns-char - c-indicator - // where ns-char = nb-char - s-white. - // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part - return isPrintable(c) && c !== CHAR_BOM - && !isWhitespace(c) // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE - // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; -} - -// Simplified test for values allowed as the last character in plain style. -function isPlainSafeLast(c) { - // just not whitespace or colon, it will be checked to be plain character later - return !isWhitespace(c) && c !== CHAR_COLON; -} - -// Same as 'string'.codePointAt(pos), but works in older browsers. -function codePointAt(string, pos) { - var first = string.charCodeAt(pos), second; - if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1); - if (second >= 0xDC00 && second <= 0xDFFF) { - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; - } - } - return first; -} - -// Determines whether block indentation indicator is required. -function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); -} - -var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, - STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; - -// Determines which scalar styles are possible and returns the preferred style. -// lineWidth = -1 => no limit. -// Pre-conditions: str.length > 0. -// Post-conditions: -// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. -// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). -// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, - testAmbiguousType, quotingType, forceQuotes, inblock) { - - var i; - var char = 0; - var prevChar = null; - var hasLineBreak = false; - var hasFoldableLine = false; // only checked if shouldTrackWidth - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(codePointAt(string, 0)) - && isPlainSafeLast(codePointAt(string, string.length - 1)); - - if (singleLineOnly || forceQuotes) { - // Case: no block styles. - // Check for disallowed characters to rule out plain and single. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - } else { - // Case: block styles permitted. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - // Check if any line can be folded. - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); - previousLineBreak = i; - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); - } - // Although every style can represent \n without escaping, prefer block styles - // for multiline, since they're more readable and they don't add empty lines. - // Also prefer folding a super-long line. - if (!hasLineBreak && !hasFoldableLine) { - // Strings interpretable as another type have to be quoted; - // e.g. the string 'true' vs. the boolean true. - if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - // Edge case: block indentation indicator can only have one digit. - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - // At this point we know block styles are valid. - // Prefer literal style unless we want to fold. - if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; -} - -// Note: line breaking/folding is implemented for only the folded style. -// NB. We drop the last trailing newline (if any) of a returned block scalar -// since the dumper adds its own newline. This always works: -// • No ending newline => unaffected; already using strip "-" chomping. -// • Ending newline => removed then restored. -// Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar(state, string, level, iskey, inblock) { - state.dump = (function () { - if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; - } - if (!state.noCompatMode) { - if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); - } - } - - var indent = state.indent * Math.max(1, level); // no 0-indent scalars - // As indentation gets deeper, let the width decrease monotonically - // to the lower bound min(state.lineWidth, 40). - // Note that this implies - // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. - // state.lineWidth > 40 + state.indent: width decreases until the lower bound. - // This behaves better than a constant minimum width which disallows narrower options, - // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - - // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey - // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); - function testAmbiguity(string) { - return testImplicitResolving(state, string); - } - - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, - testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { - - case STYLE_PLAIN: - return string; - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); - case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"'; - default: - throw new YAMLException('impossible error: invalid scalar style'); - } - }()); -} - -// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; - - // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; - var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); - - return indentIndicator + chomp + '\n'; -} - -// (See the note for writeScalar.) -function dropEndingNewline(string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; -} - -// Note: a long line without a suitable break point will exceed the width limit. -// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString(string, width) { - // In folded style, $k$ consecutive newlines output as $k+1$ newlines— - // unless they're before or after a more-indented line, or at the very - // beginning or end, in which case $k$ maps to $k$. - // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; - - // first line (possibly an empty line) - var result = (function () { - var nextLF = string.indexOf('\n'); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }()); - // If we haven't reached the first content line yet, don't add an extra \n. - var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; - - // rest of the lines - var match; - while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); - prevMoreIndented = moreIndented; - } - - return result; -} - -// Greedy line breaking. -// Picks the longest line under the limit each time, -// otherwise settles for the shortest line over the limit. -// NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; - - // Since a more-indented line adds a \n, breaks can't be followed by a space. - var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; - // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; - - // Invariants: 0 <= start <= length-1. - // 0 <= curr <= next <= max(0, length-2). curr - start <= width. - // Inside the loop: - // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index; - // maintain invariant: curr - start <= width - if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); - // skip the space that was output as \n - start = end + 1; // derive start <= length-1 - } - curr = next; - } - - // By the invariants, start <= length-1, so there is something left over. - // It is either the whole string or a part starting from non-whitespace. - result += '\n'; - // Insert a break if the remainder is too long and there is a break available. - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1); - } else { - result += line.slice(start); - } - - return result.slice(1); // drop extra \n joiner -} - -// Escapes a double-quoted string. -function escapeString(string) { - var result = ''; - var char = 0; - var escapeSeq; - - for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - escapeSeq = ESCAPE_SEQUENCES[char]; - - if (!escapeSeq && isPrintable(char)) { - result += string[i]; - if (char >= 0x10000) result += string[i + 1]; - } else { - result += escapeSeq || encodeHex(char); - } - } - - return result; -} - -function writeFlowSequence(state, level, object) { - var _result = '', - _tag = state.tag, - index, - length, - value; - - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; - - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level, value, false, false) || - (typeof value === 'undefined' && - writeNode(state, level, null, false, false))) { - - if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); - _result += state.dump; - } - } - - state.tag = _tag; - state.dump = '[' + _result + ']'; -} - -function writeBlockSequence(state, level, object, compact) { - var _result = '', - _tag = state.tag, - index, - length, - value; - - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; - - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } - - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level + 1, value, true, true, false, true) || - (typeof value === 'undefined' && - writeNode(state, level + 1, null, true, true, false, true))) { - - if (!compact || _result !== '') { - _result += generateNextLine(state, level); - } - - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-'; - } else { - _result += '- '; - } - - _result += state.dump; - } - } - - state.tag = _tag; - state.dump = _result || '[]'; // Empty sequence if no valid values. -} - -function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - - pairBuffer = ''; - if (_result !== '') pairBuffer += ', '; - - if (state.condenseFlow) pairBuffer += '"'; - - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; - - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - - if (!writeNode(state, level, objectKey, false, false)) { - continue; // Skip this pair because of invalid key; - } - - if (state.dump.length > 1024) pairBuffer += '? '; - - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); - - if (!writeNode(state, level, objectValue, false, false)) { - continue; // Skip this pair because of invalid value. - } - - pairBuffer += state.dump; - - // Both key and value are valid. - _result += pairBuffer; - } - - state.tag = _tag; - state.dump = '{' + _result + '}'; -} - -function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; - - // Allow sorting keys so that the output file is deterministic - if (state.sortKeys === true) { - // Default sorting - objectKeyList.sort(); - } else if (typeof state.sortKeys === 'function') { - // Custom sort function - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function'); - } - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; - - if (!compact || _result !== '') { - pairBuffer += generateNextLine(state, level); - } - - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; - - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } - - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; // Skip this pair because of invalid key. - } - - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); - - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?'; - } else { - pairBuffer += '? '; - } - } - - pairBuffer += state.dump; - - if (explicitPair) { - pairBuffer += generateNextLine(state, level); - } - - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; // Skip this pair because of invalid value. - } - - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':'; - } else { - pairBuffer += ': '; - } - - pairBuffer += state.dump; - - // Both key and value are valid. - _result += pairBuffer; - } - - state.tag = _tag; - state.dump = _result || '{}'; // Empty mapping if no valid pairs. -} - -function detectType(state, object, explicit) { - var _result, typeList, index, length, type, style; - - typeList = explicit ? state.explicitTypes : state.implicitTypes; - - for (index = 0, length = typeList.length; index < length; index += 1) { - type = typeList[index]; - - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { - - if (explicit) { - if (type.multi && type.representName) { - state.tag = type.representName(object); - } else { - state.tag = type.tag; - } - } else { - state.tag = '?'; - } - - if (type.represent) { - style = state.styleMap[type.tag] || type.defaultStyle; - - if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style); - } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style); - } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); - } - - state.dump = _result; - } - - return true; - } - } - - return false; -} - -// Serializes `object` and writes it to global `result`. -// Returns true on success, or false on invalid object. -// -function writeNode(state, level, object, block, compact, iskey, isblockseq) { - state.tag = null; - state.dump = object; - - if (!detectType(state, object, false)) { - detectType(state, object, true); - } - - var type = _toString.call(state.dump); - var inblock = block; - var tagStr; - - if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); - } - - var objectOrArray = type === '[object Object]' || type === '[object Array]', - duplicateIndex, - duplicate; - - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; - } - - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false; - } - - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; - } - if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } - } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; - } - } - } else if (type === '[object Array]') { - if (block && (state.dump.length !== 0)) { - if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact); - } else { - writeBlockSequence(state, level, state.dump, compact); - } - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } - } else { - writeFlowSequence(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; - } - } - } else if (type === '[object String]') { - if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey, inblock); - } - } else if (type === '[object Undefined]') { - return false; - } else { - if (state.skipInvalid) return false; - throw new YAMLException('unacceptable kind of an object to dump ' + type); - } - - if (state.tag !== null && state.tag !== '?') { - // Need to encode all characters except those allowed by the spec: - // - // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ - // [36] ns-hex-digit ::= ns-dec-digit - // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ - // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ - // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” - // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” - // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” - // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” - // - // Also need to encode '!' because it has special meaning (end of tag prefix). - // - tagStr = encodeURI( - state.tag[0] === '!' ? state.tag.slice(1) : state.tag - ).replace(/!/g, '%21'); - - if (state.tag[0] === '!') { - tagStr = '!' + tagStr; - } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { - tagStr = '!!' + tagStr.slice(18); - } else { - tagStr = '!<' + tagStr + '>'; - } - - state.dump = tagStr + ' ' + state.dump; - } - } - - return true; -} - -function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; - - inspectNode(object, objects, duplicatesIndexes); - - for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); - } - state.usedDuplicates = new Array(length); -} - -function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; - - if (object !== null && typeof object === 'object') { - index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); - } - } else { - objects.push(object); - - if (Array.isArray(object)) { - for (index = 0, length = object.length; index < length; index += 1) { - inspectNode(object[index], objects, duplicatesIndexes); - } - } else { - objectKeyList = Object.keys(object); - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); - } - } - } - } -} - -function dump(input, options) { - options = options || {}; - - var state = new State(options); - - if (!state.noRefs) getDuplicateReferences(input, state); - - var value = input; - - if (state.replacer) { - value = state.replacer.call({ '': value }, '', value); - } - - if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; - - return ''; -} - -module.exports.dump = dump; - - -/***/ }), -/* 845 */, -/* 846 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -var Ajv = __webpack_require__(514) -var HARError = __webpack_require__(814) -var schemas = __webpack_require__(623) - -var ajv - -function createAjvInstance () { - var ajv = new Ajv({ - allErrors: true - }) - ajv.addMetaSchema(__webpack_require__(337)) - ajv.addSchema(schemas) - - return ajv -} - -function validate (name, data) { - data = data || {} - - // validator config - ajv = ajv || createAjvInstance() - - var validate = ajv.getSchema(name + '.json') - - return new Promise(function (resolve, reject) { - var valid = validate(data) - - !valid ? reject(new HARError(validate.errors)) : resolve(data) - }) -} - -exports.afterRequest = function (data) { - return validate('afterRequest', data) -} - -exports.beforeRequest = function (data) { - return validate('beforeRequest', data) -} - -exports.browser = function (data) { - return validate('browser', data) -} - -exports.cache = function (data) { - return validate('cache', data) -} - -exports.content = function (data) { - return validate('content', data) -} - -exports.cookie = function (data) { - return validate('cookie', data) -} - -exports.creator = function (data) { - return validate('creator', data) -} - -exports.entry = function (data) { - return validate('entry', data) -} - -exports.har = function (data) { - return validate('har', data) -} - -exports.header = function (data) { - return validate('header', data) -} - -exports.log = function (data) { - return validate('log', data) -} - -exports.page = function (data) { - return validate('page', data) -} - -exports.pageTimings = function (data) { - return validate('pageTimings', data) -} - -exports.postData = function (data) { - return validate('postData', data) -} - -exports.query = function (data) { - return validate('query', data) -} - -exports.request = function (data) { - return validate('request', data) -} - -exports.response = function (data) { - return validate('response', data) -} - -exports.timings = function (data) { - return validate('timings', data) -} - - -/***/ }), -/* 847 */, -/* 848 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - -/*eslint-disable no-bitwise*/ - - -var Type = __webpack_require__(755); - - -// [ 64, 65, 66 ] -> [ padding, CR, LF ] -var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; - - -function resolveYamlBinary(data) { - if (data === null) return false; - - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; - - // Convert one by one. - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); - - // Skip CR/LF - if (code > 64) continue; - - // Fail on illegal characters - if (code < 0) return false; - - bitlen += 6; - } - - // If there are any bits left, source was corrupted - return (bitlen % 8) === 0; -} - -function constructYamlBinary(data) { - var idx, tailbits, - input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan - max = input.length, - map = BASE64_MAP, - bits = 0, - result = []; - - // Collect by 6*4 bits (3 bytes) - - for (idx = 0; idx < max; idx++) { - if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } - - bits = (bits << 6) | map.indexOf(input.charAt(idx)); - } - - // Dump tail - - tailbits = (max % 4) * 6; - - if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); - } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); - } - - return new Uint8Array(result); -} - -function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, - max = object.length, - map = BASE64_MAP; - - // Convert every three bytes to 4 ASCII characters. - - for (idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } - - bits = (bits << 8) + object[idx]; - } - - // Dump tail - - tail = max % 3; - - if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; - result += map[64]; - } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; - result += map[64]; - result += map[64]; - } - - return result; -} - -function isBinary(obj) { - return Object.prototype.toString.call(obj) === '[object Uint8Array]'; -} - -module.exports = new Type('tag:yaml.org,2002:binary', { - kind: 'scalar', - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary -}); - - -/***/ }), -/* 849 */, -/* 850 */, -/* 851 */, -/* 852 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(489); -var util = __webpack_require__(669); -var utils = __webpack_require__(909); - - - -///--- Globals - -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var HttpSignatureError = utils.HttpSignatureError; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var validateAlgorithm = utils.validateAlgorithm; - -var State = { - New: 0, - Params: 1 -}; - -var ParamsState = { - Name: 0, - Quote: 1, - Value: 2, - Comma: 3 -}; - - -///--- Specific Errors - - -function ExpiredRequestError(message) { - HttpSignatureError.call(this, message, ExpiredRequestError); -} -util.inherits(ExpiredRequestError, HttpSignatureError); - - -function InvalidHeaderError(message) { - HttpSignatureError.call(this, message, InvalidHeaderError); -} -util.inherits(InvalidHeaderError, HttpSignatureError); - - -function InvalidParamsError(message) { - HttpSignatureError.call(this, message, InvalidParamsError); -} -util.inherits(InvalidParamsError, HttpSignatureError); - - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - -function StrictParsingError(message) { - HttpSignatureError.call(this, message, StrictParsingError); -} -util.inherits(StrictParsingError, HttpSignatureError); - -///--- Exported API - -module.exports = { - - /** - * Parses the 'Authorization' header out of an http.ServerRequest object. - * - * Note that this API will fully validate the Authorization header, and throw - * on any error. It will not however check the signature, or the keyId format - * as those are specific to your environment. You can use the options object - * to pass in extra constraints. - * - * As a response object you can expect this: - * - * { - * "scheme": "Signature", - * "params": { - * "keyId": "foo", - * "algorithm": "rsa-sha256", - * "headers": [ - * "date" or "x-date", - * "digest" - * ], - * "signature": "base64" - * }, - * "signingString": "ready to be passed to crypto.verify()" - * } - * - * @param {Object} request an http.ServerRequest. - * @param {Object} options an optional options object with: - * - clockSkew: allowed clock skew in seconds (default 300). - * - headers: required header names (def: date or x-date) - * - algorithms: algorithms to support (default: all). - * - strict: should enforce latest spec parsing - * (default: false). - * @return {Object} parsed out object (see above). - * @throws {TypeError} on invalid input. - * @throws {InvalidHeaderError} on an invalid Authorization header error. - * @throws {InvalidParamsError} if the params in the scheme are invalid. - * @throws {MissingHeaderError} if the params indicate a header not present, - * either in the request headers from the params, - * or not in the params from a required header - * in options. - * @throws {StrictParsingError} if old attributes are used in strict parsing - * mode. - * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. - */ - parseRequest: function parseRequest(request, options) { - assert.object(request, 'request'); - assert.object(request.headers, 'request.headers'); - if (options === undefined) { - options = {}; - } - if (options.headers === undefined) { - options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; - } - assert.object(options, 'options'); - assert.arrayOfString(options.headers, 'options.headers'); - assert.optionalFinite(options.clockSkew, 'options.clockSkew'); - - var authzHeaderName = options.authorizationHeaderName || 'authorization'; - - if (!request.headers[authzHeaderName]) { - throw new MissingHeaderError('no ' + authzHeaderName + ' header ' + - 'present in the request'); - } - - options.clockSkew = options.clockSkew || 300; - - - var i = 0; - var state = State.New; - var substate = ParamsState.Name; - var tmpName = ''; - var tmpValue = ''; - - var parsed = { - scheme: '', - params: {}, - signingString: '' - }; - - var authz = request.headers[authzHeaderName]; - for (i = 0; i < authz.length; i++) { - var c = authz.charAt(i); - - switch (Number(state)) { - - case State.New: - if (c !== ' ') parsed.scheme += c; - else state = State.Params; - break; - - case State.Params: - switch (Number(substate)) { - - case ParamsState.Name: - var code = c.charCodeAt(0); - // restricted name of A-Z / a-z - if ((code >= 0x41 && code <= 0x5a) || // A-Z - (code >= 0x61 && code <= 0x7a)) { // a-z - tmpName += c; - } else if (c === '=') { - if (tmpName.length === 0) - throw new InvalidHeaderError('bad param format'); - substate = ParamsState.Quote; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Quote: - if (c === '"') { - tmpValue = ''; - substate = ParamsState.Value; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Value: - if (c === '"') { - parsed.params[tmpName] = tmpValue; - substate = ParamsState.Comma; - } else { - tmpValue += c; - } - break; - - case ParamsState.Comma: - if (c === ',') { - tmpName = ''; - substate = ParamsState.Name; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - default: - throw new Error('Invalid substate'); - } - break; - - default: - throw new Error('Invalid substate'); - } - - } - - if (!parsed.params.headers || parsed.params.headers === '') { - if (request.headers['x-date']) { - parsed.params.headers = ['x-date']; - } else { - parsed.params.headers = ['date']; - } - } else { - parsed.params.headers = parsed.params.headers.split(' '); - } - - // Minimally validate the parsed object - if (!parsed.scheme || parsed.scheme !== 'Signature') - throw new InvalidHeaderError('scheme was not "Signature"'); - - if (!parsed.params.keyId) - throw new InvalidHeaderError('keyId was not specified'); - - if (!parsed.params.algorithm) - throw new InvalidHeaderError('algorithm was not specified'); - - if (!parsed.params.signature) - throw new InvalidHeaderError('signature was not specified'); - - // Check the algorithm against the official list - parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); - try { - validateAlgorithm(parsed.params.algorithm); - } catch (e) { - if (e instanceof InvalidAlgorithmError) - throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' + - 'supported')); - else - throw (e); - } - - // Build the signingString - for (i = 0; i < parsed.params.headers.length; i++) { - var h = parsed.params.headers[i].toLowerCase(); - parsed.params.headers[i] = h; - - if (h === 'request-line') { - if (!options.strict) { - /* - * We allow headers from the older spec drafts if strict parsing isn't - * specified in options. - */ - parsed.signingString += - request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; - } else { - /* Strict parsing doesn't allow older draft headers. */ - throw (new StrictParsingError('request-line is not a valid header ' + - 'with strict parsing enabled.')); - } - } else if (h === '(request-target)') { - parsed.signingString += - '(request-target): ' + request.method.toLowerCase() + ' ' + - request.url; - } else { - var value = request.headers[h]; - if (value === undefined) - throw new MissingHeaderError(h + ' was not in the request'); - parsed.signingString += h + ': ' + value; - } - - if ((i + 1) < parsed.params.headers.length) - parsed.signingString += '\n'; - } - - // Check against the constraints - var date; - if (request.headers.date || request.headers['x-date']) { - if (request.headers['x-date']) { - date = new Date(request.headers['x-date']); - } else { - date = new Date(request.headers.date); - } - var now = new Date(); - var skew = Math.abs(now.getTime() - date.getTime()); - - if (skew > options.clockSkew * 1000) { - throw new ExpiredRequestError('clock skew of ' + - (skew / 1000) + - 's was greater than ' + - options.clockSkew + 's'); - } - } - - options.headers.forEach(function (hdr) { - // Remember that we already checked any headers in the params - // were in the request, so if this passes we're good. - if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0) - throw new MissingHeaderError(hdr + ' was not a signed header'); - }); - - if (options.algorithms) { - if (options.algorithms.indexOf(parsed.params.algorithm) === -1) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not a supported algorithm'); - } - - parsed.algorithm = parsed.params.algorithm.toUpperCase(); - parsed.keyId = parsed.params.keyId; - return parsed; - } - -}; - - -/***/ }), -/* 853 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(43); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 854 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var rfc4253 = __webpack_require__(538); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); - -var sshpriv = __webpack_require__(862); - -/*JSSTYLED*/ -var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/; -/*JSSTYLED*/ -var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/; - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var trimmed = buf.trim().replace(/[\\\r]/g, ''); - var m = trimmed.match(SSHKEY_RE); - if (!m) - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - - var type = rfc4253.algToKeyType(m[1]); - var kbuf = Buffer.from(m[2], 'base64'); - - /* - * This is a bit tricky. If we managed to parse the key and locate the - * key comment with the regex, then do a non-partial read and assert - * that we have consumed all bytes. If we couldn't locate the key - * comment, though, there may be whitespace shenanigans going on that - * have conjoined the comment to the rest of the key. We do a partial - * read in this case to try to make the best out of a sorry situation. - */ - var key; - var ret = {}; - if (m[4]) { - try { - key = rfc4253.read(kbuf); - - } catch (e) { - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - kbuf = Buffer.from(m[2], 'base64'); - key = rfc4253.readInternal(ret, 'public', kbuf); - } - } else { - key = rfc4253.readInternal(ret, 'public', kbuf); - } - - assert.strictEqual(type, key.type); - - if (m[4] && m[4].length > 0) { - key.comment = m[4]; - - } else if (ret.consumed) { - /* - * Now the magic: trying to recover the key comment when it's - * gotten conjoined to the key or otherwise shenanigan'd. - * - * Work out how much base64 we used, then drop all non-base64 - * chars from the beginning up to this point in the the string. - * Then offset in this and try to make up for missing = chars. - */ - var data = m[2] + (m[3] ? m[3] : ''); - var realOffset = Math.ceil(ret.consumed / 3) * 4; - data = data.slice(0, realOffset - 2). /*JSSTYLED*/ - replace(/[^a-zA-Z0-9+\/=]/g, '') + - data.slice(realOffset - 2); - - var padding = ret.consumed % 3; - if (padding > 0 && - data.slice(realOffset - 1, realOffset) !== '=') - realOffset--; - while (data.slice(realOffset, realOffset + 1) === '=') - realOffset++; - - /* Finally, grab what we think is the comment & clean it up. */ - var trailer = data.slice(realOffset); - trailer = trailer.replace(/[\r\n]/g, ' '). - replace(/^\s+/, ''); - if (trailer.match(/^[a-zA-Z0-9]/)) - key.comment = trailer; - } - - return (key); -} - -function write(key, options) { - assert.object(key); - if (!Key.isKey(key)) - throw (new Error('Must be a public key')); - - var parts = []; - var alg = rfc4253.keyTypeToAlg(key); - parts.push(alg); - - var buf = rfc4253.write(key); - parts.push(buf.toString('base64')); - - if (key.comment) - parts.push(key.comment); - - return (Buffer.from(parts.join(' '))); -} - - -/***/ }), -/* 855 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -"use strict"; - - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: __webpack_require__(264), - ucs2length: __webpack_require__(691), - varOccurences: varOccurences, - varReplace: varReplace, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - schemaUnknownRules: schemaUnknownRules, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, strictNumbers, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; - case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data, strictNumbers) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i= 0x30 && c <= 0x39; -} - -function isASCIIAlpha(c) { - return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); -} - -function isASCIIAlphanumeric(c) { - return isASCIIAlpha(c) || isASCIIDigit(c); -} - -function isASCIIHex(c) { - return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); -} - -function isSingleDot(buffer) { - return buffer === "." || buffer.toLowerCase() === "%2e"; -} - -function isDoubleDot(buffer) { - buffer = buffer.toLowerCase(); - return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; -} - -function isWindowsDriveLetterCodePoints(cp1, cp2) { - return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); -} - -function isWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); -} - -function isNormalizedWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; -} - -function containsForbiddenHostCodePoint(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; -} - -function containsForbiddenHostCodePointExcludingPercent(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; -} - -function isSpecialScheme(scheme) { - return specialSchemes[scheme] !== undefined; -} - -function isSpecial(url) { - return isSpecialScheme(url.scheme); -} - -function defaultPort(scheme) { - return specialSchemes[scheme]; -} - -function percentEncode(c) { - let hex = c.toString(16).toUpperCase(); - if (hex.length === 1) { - hex = "0" + hex; - } - - return "%" + hex; -} - -function utf8PercentEncode(c) { - const buf = new Buffer(c); - - let str = ""; - - for (let i = 0; i < buf.length; ++i) { - str += percentEncode(buf[i]); - } - - return str; -} - -function utf8PercentDecode(str) { - const input = new Buffer(str); - const output = []; - for (let i = 0; i < input.length; ++i) { - if (input[i] !== 37) { - output.push(input[i]); - } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { - output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); - i += 2; - } else { - output.push(input[i]); - } - } - return new Buffer(output).toString(); -} - -function isC0ControlPercentEncode(c) { - return c <= 0x1F || c > 0x7E; -} - -const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); -function isPathPercentEncode(c) { - return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); -} - -const extraUserinfoPercentEncodeSet = - new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); -function isUserinfoPercentEncode(c) { - return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); -} - -function percentEncodeChar(c, encodeSetPredicate) { - const cStr = String.fromCodePoint(c); - - if (encodeSetPredicate(c)) { - return utf8PercentEncode(cStr); - } - - return cStr; -} - -function parseIPv4Number(input) { - let R = 10; - - if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { - input = input.substring(2); - R = 16; - } else if (input.length >= 2 && input.charAt(0) === "0") { - input = input.substring(1); - R = 8; - } - - if (input === "") { - return 0; - } - - const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/); - if (regex.test(input)) { - return failure; - } - - return parseInt(input, R); -} - -function parseIPv4(input) { - const parts = input.split("."); - if (parts[parts.length - 1] === "") { - if (parts.length > 1) { - parts.pop(); - } - } - - if (parts.length > 4) { - return input; - } - - const numbers = []; - for (const part of parts) { - if (part === "") { - return input; - } - const n = parseIPv4Number(part); - if (n === failure) { - return input; - } - - numbers.push(n); - } - - for (let i = 0; i < numbers.length - 1; ++i) { - if (numbers[i] > 255) { - return failure; - } - } - if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { - return failure; - } - - let ipv4 = numbers.pop(); - let counter = 0; - - for (const n of numbers) { - ipv4 += n * Math.pow(256, 3 - counter); - ++counter; - } - - return ipv4; -} - -function serializeIPv4(address) { - let output = ""; - let n = address; - - for (let i = 1; i <= 4; ++i) { - output = String(n % 256) + output; - if (i !== 4) { - output = "." + output; - } - n = Math.floor(n / 256); - } - - return output; -} - -function parseIPv6(input) { - const address = [0, 0, 0, 0, 0, 0, 0, 0]; - let pieceIndex = 0; - let compress = null; - let pointer = 0; - - input = punycode.ucs2.decode(input); - - if (input[pointer] === 58) { - if (input[pointer + 1] !== 58) { - return failure; - } - - pointer += 2; - ++pieceIndex; - compress = pieceIndex; - } - - while (pointer < input.length) { - if (pieceIndex === 8) { - return failure; - } - - if (input[pointer] === 58) { - if (compress !== null) { - return failure; - } - ++pointer; - ++pieceIndex; - compress = pieceIndex; - continue; - } - - let value = 0; - let length = 0; - - while (length < 4 && isASCIIHex(input[pointer])) { - value = value * 0x10 + parseInt(at(input, pointer), 16); - ++pointer; - ++length; - } - - if (input[pointer] === 46) { - if (length === 0) { - return failure; - } - - pointer -= length; - - if (pieceIndex > 6) { - return failure; - } - - let numbersSeen = 0; - - while (input[pointer] !== undefined) { - let ipv4Piece = null; - - if (numbersSeen > 0) { - if (input[pointer] === 46 && numbersSeen < 4) { - ++pointer; - } else { - return failure; - } - } - - if (!isASCIIDigit(input[pointer])) { - return failure; - } - - while (isASCIIDigit(input[pointer])) { - const number = parseInt(at(input, pointer)); - if (ipv4Piece === null) { - ipv4Piece = number; - } else if (ipv4Piece === 0) { - return failure; - } else { - ipv4Piece = ipv4Piece * 10 + number; - } - if (ipv4Piece > 255) { - return failure; - } - ++pointer; - } - - address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece; - - ++numbersSeen; - - if (numbersSeen === 2 || numbersSeen === 4) { - ++pieceIndex; - } - } - - if (numbersSeen !== 4) { - return failure; - } - - break; - } else if (input[pointer] === 58) { - ++pointer; - if (input[pointer] === undefined) { - return failure; - } - } else if (input[pointer] !== undefined) { - return failure; - } - - address[pieceIndex] = value; - ++pieceIndex; - } - - if (compress !== null) { - let swaps = pieceIndex - compress; - pieceIndex = 7; - while (pieceIndex !== 0 && swaps > 0) { - const temp = address[compress + swaps - 1]; - address[compress + swaps - 1] = address[pieceIndex]; - address[pieceIndex] = temp; - --pieceIndex; - --swaps; - } - } else if (compress === null && pieceIndex !== 8) { - return failure; - } - - return address; -} - -function serializeIPv6(address) { - let output = ""; - const seqResult = findLongestZeroSequence(address); - const compress = seqResult.idx; - let ignore0 = false; - - for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { - if (ignore0 && address[pieceIndex] === 0) { - continue; - } else if (ignore0) { - ignore0 = false; - } - - if (compress === pieceIndex) { - const separator = pieceIndex === 0 ? "::" : ":"; - output += separator; - ignore0 = true; - continue; - } - - output += address[pieceIndex].toString(16); - - if (pieceIndex !== 7) { - output += ":"; - } - } - - return output; -} - -function parseHost(input, isSpecialArg) { - if (input[0] === "[") { - if (input[input.length - 1] !== "]") { - return failure; - } - - return parseIPv6(input.substring(1, input.length - 1)); - } - - if (!isSpecialArg) { - return parseOpaqueHost(input); - } - - const domain = utf8PercentDecode(input); - const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); - if (asciiDomain === null) { - return failure; - } - - if (containsForbiddenHostCodePoint(asciiDomain)) { - return failure; - } - - const ipv4Host = parseIPv4(asciiDomain); - if (typeof ipv4Host === "number" || ipv4Host === failure) { - return ipv4Host; - } - - return asciiDomain; -} - -function parseOpaqueHost(input) { - if (containsForbiddenHostCodePointExcludingPercent(input)) { - return failure; - } - - let output = ""; - const decoded = punycode.ucs2.decode(input); - for (let i = 0; i < decoded.length; ++i) { - output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); - } - return output; -} - -function findLongestZeroSequence(arr) { - let maxIdx = null; - let maxLen = 1; // only find elements > 1 - let currStart = null; - let currLen = 0; - - for (let i = 0; i < arr.length; ++i) { - if (arr[i] !== 0) { - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - currStart = null; - currLen = 0; - } else { - if (currStart === null) { - currStart = i; - } - ++currLen; - } - } - - // if trailing zeros - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - return { - idx: maxIdx, - len: maxLen - }; -} - -function serializeHost(host) { - if (typeof host === "number") { - return serializeIPv4(host); - } - - // IPv6 serializer - if (host instanceof Array) { - return "[" + serializeIPv6(host) + "]"; - } - - return host; -} - -function trimControlChars(url) { - return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); -} - -function trimTabAndNewline(url) { - return url.replace(/\u0009|\u000A|\u000D/g, ""); -} - -function shortenPath(url) { - const path = url.path; - if (path.length === 0) { - return; - } - if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { - return; - } - - path.pop(); -} - -function includesCredentials(url) { - return url.username !== "" || url.password !== ""; -} - -function cannotHaveAUsernamePasswordPort(url) { - return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; -} - -function isNormalizedWindowsDriveLetter(string) { - return /^[A-Za-z]:$/.test(string); -} - -function URLStateMachine(input, base, encodingOverride, url, stateOverride) { - this.pointer = 0; - this.input = input; - this.base = base || null; - this.encodingOverride = encodingOverride || "utf-8"; - this.stateOverride = stateOverride; - this.url = url; - this.failure = false; - this.parseError = false; - - if (!this.url) { - this.url = { - scheme: "", - username: "", - password: "", - host: null, - port: null, - path: [], - query: null, - fragment: null, - - cannotBeABaseURL: false - }; - - const res = trimControlChars(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - } - - const res = trimTabAndNewline(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - - this.state = stateOverride || "scheme start"; - - this.buffer = ""; - this.atFlag = false; - this.arrFlag = false; - this.passwordTokenSeenFlag = false; - - this.input = punycode.ucs2.decode(this.input); - - for (; this.pointer <= this.input.length; ++this.pointer) { - const c = this.input[this.pointer]; - const cStr = isNaN(c) ? undefined : String.fromCodePoint(c); - - // exec state machine - const ret = this["parse " + this.state](c, cStr); - if (!ret) { - break; // terminate algorithm - } else if (ret === failure) { - this.failure = true; - break; - } - } -} - -URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { - if (isASCIIAlpha(c)) { - this.buffer += cStr.toLowerCase(); - this.state = "scheme"; - } else if (!this.stateOverride) { - this.state = "no scheme"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { - if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { - this.buffer += cStr.toLowerCase(); - } else if (c === 58) { - if (this.stateOverride) { - if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { - return false; - } - - if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { - return false; - } - - if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { - return false; - } - - if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { - return false; - } - } - this.url.scheme = this.buffer; - this.buffer = ""; - if (this.stateOverride) { - return false; - } - if (this.url.scheme === "file") { - if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { - this.parseError = true; - } - this.state = "file"; - } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { - this.state = "special relative or authority"; - } else if (isSpecial(this.url)) { - this.state = "special authority slashes"; - } else if (this.input[this.pointer + 1] === 47) { - this.state = "path or authority"; - ++this.pointer; - } else { - this.url.cannotBeABaseURL = true; - this.url.path.push(""); - this.state = "cannot-be-a-base-URL path"; - } - } else if (!this.stateOverride) { - this.buffer = ""; - this.state = "no scheme"; - this.pointer = -1; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { - if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { - return failure; - } else if (this.base.cannotBeABaseURL && c === 35) { - this.url.scheme = this.base.scheme; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.url.cannotBeABaseURL = true; - this.state = "fragment"; - } else if (this.base.scheme === "file") { - this.state = "file"; - --this.pointer; - } else { - this.state = "relative"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "relative"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { - if (c === 47) { - this.state = "authority"; - } else { - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse relative"] = function parseRelative(c) { - this.url.scheme = this.base.scheme; - if (isNaN(c)) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 47) { - this.state = "relative slash"; - } else if (c === 63) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else if (isSpecial(this.url) && c === 92) { - this.parseError = true; - this.state = "relative slash"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(0, this.base.path.length - 1); - - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { - if (isSpecial(this.url) && (c === 47 || c === 92)) { - if (c === 92) { - this.parseError = true; - } - this.state = "special authority ignore slashes"; - } else if (c === 47) { - this.state = "authority"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "special authority ignore slashes"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { - if (c !== 47 && c !== 92) { - this.state = "authority"; - --this.pointer; - } else { - this.parseError = true; - } - - return true; -}; - -URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { - if (c === 64) { - this.parseError = true; - if (this.atFlag) { - this.buffer = "%40" + this.buffer; - } - this.atFlag = true; - - // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars - const len = countSymbols(this.buffer); - for (let pointer = 0; pointer < len; ++pointer) { - const codePoint = this.buffer.codePointAt(pointer); - - if (codePoint === 58 && !this.passwordTokenSeenFlag) { - this.passwordTokenSeenFlag = true; - continue; - } - const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); - if (this.passwordTokenSeenFlag) { - this.url.password += encodedCodePoints; - } else { - this.url.username += encodedCodePoints; - } - } - this.buffer = ""; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - if (this.atFlag && this.buffer === "") { - this.parseError = true; - return failure; - } - this.pointer -= countSymbols(this.buffer) + 1; - this.buffer = ""; - this.state = "host"; - } else { - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse hostname"] = -URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { - if (this.stateOverride && this.url.scheme === "file") { - --this.pointer; - this.state = "file host"; - } else if (c === 58 && !this.arrFlag) { - if (this.buffer === "") { - this.parseError = true; - return failure; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "port"; - if (this.stateOverride === "hostname") { - return false; - } - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - --this.pointer; - if (isSpecial(this.url) && this.buffer === "") { - this.parseError = true; - return failure; - } else if (this.stateOverride && this.buffer === "" && - (includesCredentials(this.url) || this.url.port !== null)) { - this.parseError = true; - return false; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "path start"; - if (this.stateOverride) { - return false; - } - } else { - if (c === 91) { - this.arrFlag = true; - } else if (c === 93) { - this.arrFlag = false; - } - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { - if (isASCIIDigit(c)) { - this.buffer += cStr; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92) || - this.stateOverride) { - if (this.buffer !== "") { - const port = parseInt(this.buffer); - if (port > Math.pow(2, 16) - 1) { - this.parseError = true; - return failure; - } - this.url.port = port === defaultPort(this.url.scheme) ? null : port; - this.buffer = ""; - } - if (this.stateOverride) { - return false; - } - this.state = "path start"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); - -URLStateMachine.prototype["parse file"] = function parseFile(c) { - this.url.scheme = "file"; - - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file slash"; - } else if (this.base !== null && this.base.scheme === "file") { - if (isNaN(c)) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 63) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else { - if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points - !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || - (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points - !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - shortenPath(this.url); - } else { - this.parseError = true; - } - - this.state = "path"; - --this.pointer; - } - } else { - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file host"; - } else { - if (this.base !== null && this.base.scheme === "file") { - if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { - this.url.path.push(this.base.path[0]); - } else { - this.url.host = this.base.host; - } - } - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { - if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { - --this.pointer; - if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { - this.parseError = true; - this.state = "path"; - } else if (this.buffer === "") { - this.url.host = ""; - if (this.stateOverride) { - return false; - } - this.state = "path start"; - } else { - let host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - if (host === "localhost") { - host = ""; - } - this.url.host = host; - - if (this.stateOverride) { - return false; - } - - this.buffer = ""; - this.state = "path start"; - } - } else { - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { - if (isSpecial(this.url)) { - if (c === 92) { - this.parseError = true; - } - this.state = "path"; - - if (c !== 47 && c !== 92) { - --this.pointer; - } - } else if (!this.stateOverride && c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (!this.stateOverride && c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else if (c !== undefined) { - this.state = "path"; - if (c !== 47) { - --this.pointer; - } - } - - return true; -}; - -URLStateMachine.prototype["parse path"] = function parsePath(c) { - if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || - (!this.stateOverride && (c === 63 || c === 35))) { - if (isSpecial(this.url) && c === 92) { - this.parseError = true; - } - - if (isDoubleDot(this.buffer)) { - shortenPath(this.url); - if (c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } - } else if (isSingleDot(this.buffer) && c !== 47 && - !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } else if (!isSingleDot(this.buffer)) { - if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { - if (this.url.host !== "" && this.url.host !== null) { - this.parseError = true; - this.url.host = ""; - } - this.buffer = this.buffer[0] + ":"; - } - this.url.path.push(this.buffer); - } - this.buffer = ""; - if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { - while (this.url.path.length > 1 && this.url.path[0] === "") { - this.parseError = true; - this.url.path.shift(); - } - } - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += percentEncodeChar(c, isPathPercentEncode); - } - - return true; -}; - -URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else { - // TODO: Add: not a URL code point - if (!isNaN(c) && c !== 37) { - this.parseError = true; - } - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - if (!isNaN(c)) { - this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); - } - } - - return true; -}; - -URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { - if (isNaN(c) || (!this.stateOverride && c === 35)) { - if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { - this.encodingOverride = "utf-8"; - } - - const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || - buffer[i] === 0x3C || buffer[i] === 0x3E) { - this.url.query += percentEncode(buffer[i]); - } else { - this.url.query += String.fromCodePoint(buffer[i]); - } - } - - this.buffer = ""; - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { - if (isNaN(c)) { // do nothing - } else if (c === 0x0) { - this.parseError = true; - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); - } - - return true; -}; - -function serializeURL(url, excludeFragment) { - let output = url.scheme + ":"; - if (url.host !== null) { - output += "//"; - - if (url.username !== "" || url.password !== "") { - output += url.username; - if (url.password !== "") { - output += ":" + url.password; - } - output += "@"; - } - - output += serializeHost(url.host); - - if (url.port !== null) { - output += ":" + url.port; - } - } else if (url.host === null && url.scheme === "file") { - output += "//"; - } - - if (url.cannotBeABaseURL) { - output += url.path[0]; - } else { - for (const string of url.path) { - output += "/" + string; - } - } - - if (url.query !== null) { - output += "?" + url.query; - } - - if (!excludeFragment && url.fragment !== null) { - output += "#" + url.fragment; - } - - return output; -} - -function serializeOrigin(tuple) { - let result = tuple.scheme + "://"; - result += serializeHost(tuple.host); - - if (tuple.port !== null) { - result += ":" + tuple.port; - } - - return result; -} - -module.exports.serializeURL = serializeURL; - -module.exports.serializeURLOrigin = function (url) { - // https://url.spec.whatwg.org/#concept-url-origin - switch (url.scheme) { - case "blob": - try { - return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); - } catch (e) { - // serializing an opaque origin returns "null" - return "null"; - } - case "ftp": - case "gopher": - case "http": - case "https": - case "ws": - case "wss": - return serializeOrigin({ - scheme: url.scheme, - host: url.host, - port: url.port - }); - case "file": - // spec says "exercise to the reader", chrome says "file://" - return "file://"; - default: - // serializing an opaque origin returns "null" - return "null"; - } -}; - -module.exports.basicURLParse = function (input, options) { - if (options === undefined) { - options = {}; - } - - const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); - if (usm.failure) { - return "failure"; - } - - return usm.url; -}; - -module.exports.setTheUsername = function (url, username) { - url.username = ""; - const decoded = punycode.ucs2.decode(username); - for (let i = 0; i < decoded.length; ++i) { - url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } -}; - -module.exports.setThePassword = function (url, password) { - url.password = ""; - const decoded = punycode.ucs2.decode(password); - for (let i = 0; i < decoded.length; ++i) { - url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } -}; - -module.exports.serializeHost = serializeHost; - -module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; - -module.exports.serializeInteger = function (integer) { - return String(integer); -}; - -module.exports.parseURL = function (input, options) { - if (options === undefined) { - options = {}; - } - - // We don't handle blobs, so this just delegates: - return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); -}; - +var _default = extractUrlsWithIndices; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 857 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -var stream = __webpack_require__(413) +/***/ 7425: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -function isStream (obj) { - return obj instanceof stream.Stream -} +var _interopRequireDefault = __nccwpck_require__(3286); -function isReadable (obj) { - return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object' -} +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _configs = _interopRequireDefault(__nccwpck_require__(6290)); -function isWritable (obj) { - return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object' -} +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); +var _getCharacterWeight = _interopRequireDefault(__nccwpck_require__(8606)); -function isDuplex (obj) { - return isReadable(obj) && isWritable(obj) -} +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); + +var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); +var _parseTweet = _interopRequireDefault(__nccwpck_require__(8532)); -module.exports = isStream -module.exports.isReadable = isReadable -module.exports.isWritable = isWritable -module.exports.isDuplex = isDuplex +var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var getTweetLength = function getTweetLength(text) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + return (0, _parseTweet["default"])(text, options).weightedLength; +}; + +var _default = getTweetLength; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 858 */ -/***/ (function(module) { + +/***/ 2091: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -module.exports = function generate_required(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $vSchema = 'schema' + $lvl; - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired, - $ownProperties = it.opts.ownProperties; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += '; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var $propertyKey, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $propertyKey = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(6764); + +var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 + +/** + * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js + */ +function _default(text) { + return text.replace(_nonBmpCodePairs["default"], ' ').length; } +module.exports = exports.default; /***/ }), -/* 859 */, -/* 860 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 4597: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = _default; -var _invalidChars = _interopRequireDefault(__webpack_require__(516)); +var _invalidChars = _interopRequireDefault(__nccwpck_require__(8678)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 @@ -49919,8090 +25545,6563 @@ function _default(text) { module.exports = exports.default; /***/ }), -/* 861 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 7334: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -__webpack_require__(493); +var _interopRequireDefault = __nccwpck_require__(3286); -Object.defineProperty(exports, "__esModule", { +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = void 0; +})); +exports["default"] = _default; + +var _splitTags = _interopRequireDefault(__nccwpck_require__(7422)); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlScheme = /(?:[a-z][a-z0-9+\-.]*)/i; -var _default = validateUrlScheme; -exports["default"] = _default; +function _default(text, hits, options) { + var defaultHighlightTag = 'em'; + hits = hits || []; + options = options || {}; + + if (hits.length === 0) { + return text; + } + + var tagName = options.tag || defaultHighlightTag, + tags = ["<".concat(tagName, ">"), "")], + chunks = (0, _splitTags["default"])(text), + i, + j, + result = '', + chunkIndex = 0, + chunk = chunks[0], + prevChunksLen = 0, + chunkCursor = 0, + startInChunk = false, + chunkChars = chunk, + flatHits = [], + index, + hit, + tag, + placed, + hitSpot; + + for (i = 0; i < hits.length; i += 1) { + for (j = 0; j < hits[i].length; j += 1) { + flatHits.push(hits[i][j]); + } + } + + for (index = 0; index < flatHits.length; index += 1) { + hit = flatHits[index]; + tag = tags[index % 2]; + placed = false; + + while (chunk != null && hit >= prevChunksLen + chunk.length) { + result += chunkChars.slice(chunkCursor); + + if (startInChunk && hit === prevChunksLen + chunkChars.length) { + result += tag; + placed = true; + } + + if (chunks[chunkIndex + 1]) { + result += "<".concat(chunks[chunkIndex + 1], ">"); + } + + prevChunksLen += chunkChars.length; + chunkCursor = 0; + chunkIndex += 2; + chunk = chunks[chunkIndex]; + chunkChars = chunk; + startInChunk = false; + } + + if (!placed && chunk != null) { + hitSpot = hit - prevChunksLen; + result += chunkChars.slice(chunkCursor, hitSpot) + tag; + chunkCursor = hitSpot; + + if (index % 2 === 0) { + startInChunk = true; + } else { + startInChunk = false; + } + } else if (!placed) { + placed = true; + result += tag; + } + } + + if (chunk != null) { + if (chunkCursor < chunkChars.length) { + result += chunkChars.slice(chunkCursor); + } + + for (index = chunkIndex + 1; index < chunks.length; index += 1) { + result += index % 2 === 0 ? chunks[index] : "<".concat(chunks[index], ">"); + } + } + + return result; +} + module.exports = exports.default; /***/ }), -/* 862 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// Copyright 2015 Joyent, Inc. +/***/ 8113: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; -module.exports = { - read: read, - readSSHPrivate: readSSHPrivate, - write: write -}; -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var crypto = __webpack_require__(417); +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var pem = __webpack_require__(268); -var rfc4253 = __webpack_require__(538); -var SSHBuffer = __webpack_require__(940); -var errors = __webpack_require__(570); +__nccwpck_require__(6764); -var bcrypt; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var HTML_ENTITIES = { + '&': '&', + '>': '>', + '<': '<', + '"': '"', + "'": ''' +}; -function read(buf, options) { - return (pem.read(buf, options)); +function _default(text) { + return text && text.replace(/[&"'><]/g, function (character) { + return HTML_ENTITIES[character]; + }); } -var MAGIC = 'openssh-key-v1'; +module.exports = exports.default; + +/***/ }), + +/***/ 6223: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _autoLink = _interopRequireDefault(__nccwpck_require__(6300)); + +var _autoLinkCashtags = _interopRequireDefault(__nccwpck_require__(9915)); + +var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + +var _autoLinkHashtags = _interopRequireDefault(__nccwpck_require__(5165)); + +var _autoLinkUrlsCustom = _interopRequireDefault(__nccwpck_require__(7465)); + +var _autoLinkUsernamesOrLists = _interopRequireDefault(__nccwpck_require__(4240)); + +var _autoLinkWithJSON = _interopRequireDefault(__nccwpck_require__(8478)); + +var _configs = _interopRequireDefault(__nccwpck_require__(6290)); + +var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(1398)); + +var _extractCashtags = _interopRequireDefault(__nccwpck_require__(7456)); + +var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); + +var _extractEntitiesWithIndices = _interopRequireDefault(__nccwpck_require__(7375)); + +var _extractHashtags = _interopRequireDefault(__nccwpck_require__(9422)); + +var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); + +var _extractHtmlAttrsFromOptions = _interopRequireDefault(__nccwpck_require__(6167)); + +var _extractMentions = _interopRequireDefault(__nccwpck_require__(10)); + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + +var _extractMentionsWithIndices = _interopRequireDefault(__nccwpck_require__(172)); + +var _extractReplies = _interopRequireDefault(__nccwpck_require__(9043)); -function readSSHPrivate(type, buf, options) { - buf = new SSHBuffer({buffer: buf}); +var _extractUrls = _interopRequireDefault(__nccwpck_require__(4419)); - var magic = buf.readCString(); - assert.strictEqual(magic, MAGIC, 'bad magic string'); +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); - var cipher = buf.readString(); - var kdf = buf.readString(); - var kdfOpts = buf.readBuffer(); +var _getTweetLength = _interopRequireDefault(__nccwpck_require__(7425)); - var nkeys = buf.readInt(); - if (nkeys !== 1) { - throw (new Error('OpenSSH-format key file contains ' + - 'multiple keys: this is unsupported.')); - } +var _getUnicodeTextLength = _interopRequireDefault(__nccwpck_require__(2091)); - var pubKey = buf.readBuffer(); +var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); - if (type === 'public') { - assert.ok(buf.atEnd(), 'excess bytes left after key'); - return (rfc4253.read(pubKey)); - } +var _hitHighlight = _interopRequireDefault(__nccwpck_require__(7334)); - var privKeyBlob = buf.readBuffer(); - assert.ok(buf.atEnd(), 'excess bytes left after key'); +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts }); - switch (kdf) { - case 'none': - if (cipher !== 'none') { - throw (new Error('OpenSSH-format key uses KDF "none" ' + - 'but specifies a cipher other than "none"')); - } - break; - case 'bcrypt': - var salt = kdfOptsBuf.readBuffer(); - var rounds = kdfOptsBuf.readInt(); - var cinf = utils.opensshCipherInfo(cipher); - if (bcrypt === undefined) { - bcrypt = __webpack_require__(641); - } +var _isInvalidTweet = _interopRequireDefault(__nccwpck_require__(4137)); - if (typeof (options.passphrase) === 'string') { - options.passphrase = Buffer.from(options.passphrase, - 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'OpenSSH')); - } +var _isValidHashtag = _interopRequireDefault(__nccwpck_require__(9121)); - var pass = new Uint8Array(options.passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - var cipherStream = crypto.createDecipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(privKeyBlob); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - privKeyBlob = Buffer.concat(chunks); - break; - default: - throw (new Error( - 'OpenSSH-format key uses unknown KDF "' + kdf + '"')); - } +var _isValidList = _interopRequireDefault(__nccwpck_require__(9437)); - buf = new SSHBuffer({buffer: privKeyBlob}); +var _isValidTweetText = _interopRequireDefault(__nccwpck_require__(946)); - var checkInt1 = buf.readInt(); - var checkInt2 = buf.readInt(); - if (checkInt1 !== checkInt2) { - throw (new Error('Incorrect passphrase supplied, could not ' + - 'decrypt key')); - } +var _isValidUrl = _interopRequireDefault(__nccwpck_require__(6524)); - var ret = {}; - var key = rfc4253.readInternal(ret, 'private', buf.remainder()); - - buf.skip(ret.consumed); - - var comment = buf.readString(); - key.comment = comment; - - return (key); -} - -function write(key, options) { - var pubKey; - if (PrivateKey.isPrivateKey(key)) - pubKey = key.toPublic(); - else - pubKey = key; - - var cipher = 'none'; - var kdf = 'none'; - var kdfopts = Buffer.alloc(0); - var cinf = { blockSize: 8 }; - var passphrase; - if (options !== undefined) { - passphrase = options.passphrase; - if (typeof (passphrase) === 'string') - passphrase = Buffer.from(passphrase, 'utf-8'); - if (passphrase !== undefined) { - assert.buffer(passphrase, 'options.passphrase'); - assert.optionalString(options.cipher, 'options.cipher'); - cipher = options.cipher; - if (cipher === undefined) - cipher = 'aes128-ctr'; - cinf = utils.opensshCipherInfo(cipher); - kdf = 'bcrypt'; - } - } +var _isValidUsername = _interopRequireDefault(__nccwpck_require__(9772)); - var privBuf; - if (PrivateKey.isPrivateKey(key)) { - privBuf = new SSHBuffer({}); - var checkInt = crypto.randomBytes(4).readUInt32BE(0); - privBuf.writeInt(checkInt); - privBuf.writeInt(checkInt); - privBuf.write(key.toBuffer('rfc4253')); - privBuf.writeString(key.comment || ''); - - var n = 1; - while (privBuf._offset % cinf.blockSize !== 0) - privBuf.writeChar(n++); - privBuf = privBuf.toBuffer(); - } +var _linkTextWithEntity = _interopRequireDefault(__nccwpck_require__(1543)); - switch (kdf) { - case 'none': - break; - case 'bcrypt': - var salt = crypto.randomBytes(16); - var rounds = 16; - var kdfssh = new SSHBuffer({}); - kdfssh.writeBuffer(salt); - kdfssh.writeInt(rounds); - kdfopts = kdfssh.toBuffer(); - - if (bcrypt === undefined) { - bcrypt = __webpack_require__(641); - } - var pass = new Uint8Array(passphrase); - var salti = new Uint8Array(salt); - /* Use the pbkdf to derive both the key and the IV. */ - var out = new Uint8Array(cinf.keySize + cinf.blockSize); - var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, - out, out.length, rounds); - if (res !== 0) { - throw (new Error('bcrypt_pbkdf function returned ' + - 'failure, parameters invalid')); - } - out = Buffer.from(out); - var ckey = out.slice(0, cinf.keySize); - var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); - - var cipherStream = crypto.createCipheriv(cinf.opensslName, - ckey, iv); - cipherStream.setAutoPadding(false); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - throw (e); - }); - cipherStream.write(privBuf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - privBuf = Buffer.concat(chunks); - break; - default: - throw (new Error('Unsupported kdf ' + kdf)); - } +var _linkToCashtag = _interopRequireDefault(__nccwpck_require__(5583)); - var buf = new SSHBuffer({}); - - buf.writeCString(MAGIC); - buf.writeString(cipher); /* cipher */ - buf.writeString(kdf); /* kdf */ - buf.writeBuffer(kdfopts); /* kdfoptions */ - - buf.writeInt(1); /* nkeys */ - buf.writeBuffer(pubKey.toBuffer('rfc4253')); - - if (privBuf) - buf.writeBuffer(privBuf); - - buf = buf.toBuffer(); - - var header; - if (PrivateKey.isPrivateKey(key)) - header = 'OPENSSH PRIVATE KEY'; - else - header = 'OPENSSH PUBLIC KEY'; - - var tmp = buf.toString('base64'); - var len = tmp.length + (tmp.length / 70) + - 18 + 16 + header.length*2 + 10; - buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 70; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); +var _linkToHashtag = _interopRequireDefault(__nccwpck_require__(5537)); - return (buf.slice(0, o)); -} +var _linkToMentionAndList = _interopRequireDefault(__nccwpck_require__(8702)); +var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); -/***/ }), -/* 863 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); -"use strict"; +var _linkToUrl = _interopRequireDefault(__nccwpck_require__(1656)); +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); -/*eslint-disable max-len*/ +var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__nccwpck_require__(1614)); -var YAMLException = __webpack_require__(652); -var Type = __webpack_require__(755); +var _index = _interopRequireDefault(__nccwpck_require__(4440)); +var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); -function compileList(schema, name) { - var result = []; +var _parseTweet = _interopRequireDefault(__nccwpck_require__(8532)); - schema[name].forEach(function (currentType) { - var newIndex = result.length; +var _splitTags = _interopRequireDefault(__nccwpck_require__(7422)); - result.forEach(function (previousType, previousIndex) { - if (previousType.tag === currentType.tag && - previousType.kind === currentType.kind && - previousType.multi === currentType.multi) { +var _standardizeIndices = _interopRequireDefault(__nccwpck_require__(1232)); - newIndex = previousIndex; - } - }); +var _tagAttrs = _interopRequireDefault(__nccwpck_require__(3995)); - result[newIndex] = currentType; - }); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var _default = { + autoLink: _autoLink["default"], + autoLinkCashtags: _autoLinkCashtags["default"], + autoLinkEntities: _autoLinkEntities["default"], + autoLinkHashtags: _autoLinkHashtags["default"], + autoLinkUrlsCustom: _autoLinkUrlsCustom["default"], + autoLinkUsernamesOrLists: _autoLinkUsernamesOrLists["default"], + autoLinkWithJSON: _autoLinkWithJSON["default"], + configs: _configs["default"], + convertUnicodeIndices: _convertUnicodeIndices["default"], + extractCashtags: _extractCashtags["default"], + extractCashtagsWithIndices: _extractCashtagsWithIndices["default"], + extractEntitiesWithIndices: _extractEntitiesWithIndices["default"], + extractHashtags: _extractHashtags["default"], + extractHashtagsWithIndices: _extractHashtagsWithIndices["default"], + extractHtmlAttrsFromOptions: _extractHtmlAttrsFromOptions["default"], + extractMentions: _extractMentions["default"], + extractMentionsOrListsWithIndices: _extractMentionsOrListsWithIndices["default"], + extractMentionsWithIndices: _extractMentionsWithIndices["default"], + extractReplies: _extractReplies["default"], + extractUrls: _extractUrls["default"], + extractUrlsWithIndices: _extractUrlsWithIndices["default"], + getTweetLength: _getTweetLength["default"], + getUnicodeTextLength: _getUnicodeTextLength["default"], + hasInvalidCharacters: _hasInvalidCharacters["default"], + hitHighlight: _hitHighlight["default"], + htmlEscape: _htmlEscape["default"], + isInvalidTweet: _isInvalidTweet["default"], + isValidHashtag: _isValidHashtag["default"], + isValidList: _isValidList["default"], + isValidTweetText: _isValidTweetText["default"], + isValidUrl: _isValidUrl["default"], + isValidUsername: _isValidUsername["default"], + linkTextWithEntity: _linkTextWithEntity["default"], + linkToCashtag: _linkToCashtag["default"], + linkToHashtag: _linkToHashtag["default"], + linkToMentionAndList: _linkToMentionAndList["default"], + linkToText: _linkToText["default"], + linkToTextWithSymbol: _linkToTextWithSymbol["default"], + linkToUrl: _linkToUrl["default"], + modifyIndicesFromUTF16ToUnicode: _modifyIndicesFromUTF16ToUnicode["default"], + modifyIndicesFromUnicodeToUTF16: _modifyIndicesFromUnicodeToUTF["default"], + regexen: _index["default"], + removeOverlappingEntities: _removeOverlappingEntities["default"], + parseTweet: _parseTweet["default"], + splitTags: _splitTags["default"], + standardizeIndices: _standardizeIndices["default"], + tagAttrs: _tagAttrs["default"] +}; +exports["default"] = _default; +module.exports = exports.default; - return result; -} +/***/ }), +/***/ 4137: +/***/ ((module, exports, __nccwpck_require__) => { -function compileMap(/* lists... */) { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - }, index, length; +"use strict"; - function collectType(type) { - if (type.multi) { - result.multi[type.kind].push(type); - result.multi['fallback'].push(type); - } else { - result[type.kind][type.tag] = result['fallback'][type.tag] = type; - } - } - for (index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); - } - return result; -} +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -function Schema(definition) { - return this.extend(definition); -} +__nccwpck_require__(6880); +__nccwpck_require__(5085); -Schema.prototype.extend = function extend(definition) { - var implicit = []; - var explicit = []; +__nccwpck_require__(5188); - if (definition instanceof Type) { - // Schema.extend(type) - explicit.push(definition); +__nccwpck_require__(7461); - } else if (Array.isArray(definition)) { - // Schema.extend([ type1, type2, ... ]) - explicit = explicit.concat(definition); +__nccwpck_require__(4679); - } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { - // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) - if (definition.implicit) implicit = implicit.concat(definition.implicit); - if (definition.explicit) explicit = explicit.concat(definition.explicit); +__nccwpck_require__(3747); - } else { - throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + - 'or a schema definition ({ implicit: [...], explicit: [...] })'); - } +__nccwpck_require__(230); - implicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); - } +__nccwpck_require__(3938); - if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); - } +__nccwpck_require__(571); - if (type.multi) { - throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); - } - }); +__nccwpck_require__(7103); - explicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); - } - }); +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); - var result = Object.create(Schema.prototype); +var _configs = _interopRequireDefault(__nccwpck_require__(6290)); - result.implicit = (this.implicit || []).concat(implicit); - result.explicit = (this.explicit || []).concat(explicit); +var _getTweetLength = _interopRequireDefault(__nccwpck_require__(7425)); - result.compiledImplicit = compileList(result, 'implicit'); - result.compiledExplicit = compileList(result, 'explicit'); - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); +var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); - return result; -}; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } -module.exports = Schema; +function _default(text) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + if (!text) { + return 'empty'; + } -/***/ }), -/* 864 */, -/* 865 */, -/* 866 */ -/***/ (function(module) { + var mergedOptions = _objectSpread({}, _configs["default"].defaults, {}, options); -module.exports = removeHook; + var maxLength = mergedOptions.maxWeightedTweetLength; // Determine max length independent of URL length -function removeHook(state, name, method) { - if (!state.registry[name]) { - return; + if ((0, _getTweetLength["default"])(text, mergedOptions) > maxLength) { + return 'too_long'; } - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - - if (index === -1) { - return; + if ((0, _hasInvalidCharacters["default"])(text)) { + return 'invalid_characters'; } - state.registry[name].splice(index, 1); + return false; } +module.exports = exports.default; /***/ }), -/* 867 */ -/***/ (function(module) { - -module.exports = require("tty"); -/***/ }), -/* 868 */, -/* 869 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ 9121: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = _default; -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); - -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); +var _extractHashtags = _interopRequireDefault(__nccwpck_require__(9422)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractMentionsOrListsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); +function _default(hashtag) { + if (!hashtag) { + return false; + } + + var extracted = (0, _extractHashtags["default"])(hashtag); // Should extract the hashtag minus the # sign, hence the .slice(1) + + return extracted.length === 1 && extracted[0] === hashtag.slice(1); } module.exports = exports.default; /***/ }), -/* 870 */, -/* 871 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 9437: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -__webpack_require__(493); +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = void 0; +})); +exports["default"] = _default; + +__nccwpck_require__(4931); + +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + +var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -// Punting on real IPv6 validation for now -var validateUrlIpv6 = /(?:\[[a-f0-9:\.]+\])/i; -var _default = validateUrlIpv6; -exports["default"] = _default; +var VALID_LIST_RE = (0, _regexSupplant["default"])(/^#{validMentionOrList}$/, { + validMentionOrList: _validMentionOrList["default"] +}); + +function _default(usernameList) { + var match = usernameList.match(VALID_LIST_RE); // Must have matched and had nothing before or after + + return !!(match && match[1] == '' && match[4]); +} + module.exports = exports.default; /***/ }), -/* 872 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 946: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -__webpack_require__(493); +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = void 0; +})); +exports["default"] = _default; + +var _isInvalidTweet = _interopRequireDefault(__nccwpck_require__(4137)); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomainTld = /(?:[a-z](?:[a-z0-9\-]*[a-z0-9])?)/i; -var _default = validateUrlDomainTld; -exports["default"] = _default; -module.exports = exports.default; +function _default(text, options) { + return !(0, _isInvalidTweet["default"])(text, options); +} -/***/ }), -/* 873 */, -/* 874 */, -/* 875 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +module.exports = exports.default; -"use strict"; +/***/ }), +/***/ 6524: +/***/ ((module, exports, __nccwpck_require__) => { -var net = __webpack_require__(631) - , tls = __webpack_require__(16) - , http = __webpack_require__(605) - , https = __webpack_require__(211) - , events = __webpack_require__(614) - , assert = __webpack_require__(357) - , util = __webpack_require__(669) - , Buffer = __webpack_require__(149).Buffer - ; +"use strict"; -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps +var _interopRequireDefault = __nccwpck_require__(3286); -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} +__nccwpck_require__(6880); -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} +__nccwpck_require__(7662); -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} +__nccwpck_require__(4931); +var _validateUrlAuthority = _interopRequireDefault(__nccwpck_require__(9072)); -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) +var _validateUrlFragment = _interopRequireDefault(__nccwpck_require__(2769)); -TunnelingAgent.prototype.addRequest = function addRequest(req, options) { - var self = this +var _validateUrlPath = _interopRequireDefault(__nccwpck_require__(1075)); - // Legacy API: addRequest(req, host, port, path) - if (typeof options === 'string') { - options = { - host: options, - port: arguments[2], - path: arguments[3] - }; - } +var _validateUrlQuery = _interopRequireDefault(__nccwpck_require__(1697)); - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: options.host, port: options.port, request: req}) - return - } +var _validateUrlScheme = _interopRequireDefault(__nccwpck_require__(6579)); - // If we are under maxSockets create a new one. - self.createConnection({host: options.host, port: options.port, request: req}) -} +var _validateUrlUnencoded = _interopRequireDefault(__nccwpck_require__(3907)); -TunnelingAgent.prototype.createConnection = function createConnection(pending) { - var self = this +var _validateUrlUnicodeAuthority = _interopRequireDefault(__nccwpck_require__(977)); - self.createSocket(pending, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - pending.request.onSocket(socket) +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function isValidMatch(string, regex, optional) { + if (!optional) { + // RegExp["$&"] is the text of the last match + // blank strings are ok, but are falsy, so we check stringiness instead of truthiness + return typeof string === 'string' && string.match(regex) && RegExp['$&'] === string; + } // RegExp["$&"] is the text of the last match - function onFree() { - self.emit('free', socket, pending.host, pending.port) - } - function onCloseOrRemove(err) { - self.removeSocket(socket) - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) + return !string || string.match(regex) && RegExp['$&'] === string; } -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - Buffer.from(connectOptions.proxyAuth).toString('base64') +function _default(url, unicodeDomains, requireProtocol) { + if (unicodeDomains == null) { + unicodeDomains = true; } - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true + if (requireProtocol == null) { + requireProtocol = true; } - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) + if (!url) { + return false; } - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } + var urlParts = url.match(_validateUrlUnencoded["default"]); + + if (!urlParts || urlParts[0] !== url) { + return false; } - function onError(cause) { - connectReq.removeAllListeners() + var scheme = urlParts[1], + authority = urlParts[2], + path = urlParts[3], + query = urlParts[4], + fragment = urlParts[5]; - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) + if (!((!requireProtocol || isValidMatch(scheme, _validateUrlScheme["default"]) && scheme.match(/^https?$/i)) && isValidMatch(path, _validateUrlPath["default"]) && isValidMatch(query, _validateUrlQuery["default"], true) && isValidMatch(fragment, _validateUrlFragment["default"], true))) { + return false; } + + return unicodeDomains && isValidMatch(authority, _validateUrlUnicodeAuthority["default"]) || !unicodeDomains && isValidMatch(authority, _validateUrlAuthority["default"]); } -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return +module.exports = exports.default; - this.sockets.splice(pos, 1) +/***/ }), - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createConnection(pending) - } -} +/***/ 9772: +/***/ ((module, exports, __nccwpck_require__) => { -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - self.sockets[self.sockets.indexOf(socket)] = secureSocket - cb(secureSocket) - }) -} +"use strict"; -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} +var _interopRequireDefault = __nccwpck_require__(3286); +__nccwpck_require__(6880); -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +var _extractMentions = _interopRequireDefault(__nccwpck_require__(10)); -/***/ }), -/* 876 */, -/* 877 */, -/* 878 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(username) { + if (!username) { + return false; + } -"use strict"; -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. + var extracted = (0, _extractMentions["default"])(username); // Should extract the username minus the @ sign, hence the .slice(1) + return extracted.length === 1 && extracted[0] === username.slice(1); +} +module.exports = exports.default; -var extend = __webpack_require__(374) -var cookies = __webpack_require__(602) -var helpers = __webpack_require__(151) +/***/ }), -var paramsHaveRequestBody = helpers.paramsHaveRequestBody +/***/ 2105: +/***/ ((module, exports, __nccwpck_require__) => { -// organize params for patch, post, put, head, del -function initParams (uri, options, callback) { - if (typeof options === 'function') { - callback = options - } +"use strict"; - var params = {} - if (typeof options === 'object') { - extend(params, options, {uri: uri}) - } else if (typeof uri === 'string') { - extend(params, {uri: uri}) - } else { - extend(params, uri) - } - params.callback = callback || params.callback - return params -} +__nccwpck_require__(6880); -function request (uri, options, callback) { - if (typeof uri === 'undefined') { - throw new Error('undefined is not a valid uri or options object.') - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; - var params = initParams(uri, options, callback) +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(o) { + var r = {}; - if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { - throw new Error('HTTP HEAD requests MUST NOT include a request body.') + for (var k in o) { + if (o.hasOwnProperty(k)) { + r[k] = o[k]; + } } - return new request.Request(params) + return r; } -function verbFunc (verb) { - var method = verb.toUpperCase() - return function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.method = method - return request(params, params.callback) - } -} +module.exports = exports.default; -// define like this to please codeintel/intellisense IDEs -request.get = verbFunc('get') -request.head = verbFunc('head') -request.options = verbFunc('options') -request.post = verbFunc('post') -request.put = verbFunc('put') -request.patch = verbFunc('patch') -request.del = verbFunc('delete') -request['delete'] = verbFunc('delete') +/***/ }), -request.jar = function (store) { - return cookies.jar(store) -} +/***/ 6954: +/***/ ((module, exports, __nccwpck_require__) => { -request.cookie = function (str) { - return cookies.parse(str) -} +"use strict"; -function wrapRequestMethod (method, options, requester, verb) { - return function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - var target = {} - extend(true, target, options, params) +__nccwpck_require__(6880); - target.pool = params.pool || options.pool +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (verb) { - target.method = verb.toUpperCase() - } +__nccwpck_require__(7920); - if (typeof requester === 'function') { - method = requester - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 - return method(target, target.callback) +/** + * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js + */ +var convertUnicodeIndices = function convertUnicodeIndices(text, entities, indicesInUTF16) { + if (entities.length === 0) { + return; } -} -request.defaults = function (options, requester) { - var self = this - - options = options || {} - - if (typeof options === 'function') { - requester = options - options = {} - } + var charIndex = 0; + var codePointIndex = 0; // sort entities by start index - var defaults = wrapRequestMethod(self, options, requester) + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var entityIndex = 0; + var entity = entities[0]; - var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete'] - verbs.forEach(function (verb) { - defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) - }) + while (charIndex < text.length) { + if (entity.indices[0] === (indicesInUTF16 ? charIndex : codePointIndex)) { + var len = entity.indices[1] - entity.indices[0]; + entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; + entity.indices[1] = entity.indices[0] + len; + entityIndex++; - defaults.cookie = wrapRequestMethod(self.cookie, options, requester) - defaults.jar = self.jar - defaults.defaults = self.defaults - return defaults -} + if (entityIndex === entities.length) { + // no more entity + break; + } -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - extend(options, optionsArg) - } - if (agentOptions) { - options.agentOptions = agentOptions - } + entity = entities[entityIndex]; + } - options.forever = true - return request.defaults(options) -} + var c = text.charCodeAt(charIndex); -// Exports + if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { + // Found high surrogate char + c = text.charCodeAt(charIndex + 1); -module.exports = request -request.Request = __webpack_require__(455) -request.initParams = initParams + if (c >= 0xdc00 && c <= 0xdfff) { + // Found surrogate pair + charIndex++; + } + } -// Backwards compatibility for request.debug -Object.defineProperty(request, 'debug', { - enumerable: true, - get: function () { - return request.Request.debug - }, - set: function (debug) { - request.Request.debug = debug + codePointIndex++; + charIndex++; } -}) +}; +var _default = convertUnicodeIndices; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 879 */, -/* 880 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + +/***/ 8606: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -const conversions = __webpack_require__(751); -const utils = __webpack_require__(120); -const Impl = __webpack_require__(197); +__nccwpck_require__(6880); -const impl = utils.implSymbol; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -function URL(url) { - if (!this || this[impl] || !(this instanceof URL)) { - throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); - } - const args = []; - for (let i = 0; i < arguments.length && i < 2; ++i) { - args[i] = arguments[i]; - } - args[0] = conversions["USVString"](args[0]); - if (args[1] !== undefined) { - args[1] = conversions["USVString"](args[1]); - } +__nccwpck_require__(4088); - module.exports.setup(this, args); -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var getCharacterWeight = function getCharacterWeight(ch, options) { + var defaultWeight = options.defaultWeight, + ranges = options.ranges; + var weight = defaultWeight; + var chCodePoint = ch.charCodeAt(0); + + if (Array.isArray(ranges)) { + for (var i = 0, length = ranges.length; i < length; i++) { + var currRange = ranges[i]; -URL.prototype.toJSON = function toJSON() { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - const args = []; - for (let i = 0; i < arguments.length && i < 0; ++i) { - args[i] = arguments[i]; + if (chCodePoint >= currRange.start && chCodePoint <= currRange.end) { + weight = currRange.weight; + break; + } + } } - return this[impl].toJSON.apply(this[impl], args); -}; -Object.defineProperty(URL.prototype, "href", { - get() { - return this[impl].href; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].href = V; - }, - enumerable: true, - configurable: true -}); -URL.prototype.toString = function () { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - return this.href; + return weight; }; -Object.defineProperty(URL.prototype, "origin", { - get() { - return this[impl].origin; - }, - enumerable: true, - configurable: true -}); +var _default = getCharacterWeight; +exports["default"] = _default; +module.exports = exports.default; -Object.defineProperty(URL.prototype, "protocol", { - get() { - return this[impl].protocol; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].protocol = V; - }, - enumerable: true, - configurable: true -}); +/***/ }), -Object.defineProperty(URL.prototype, "username", { - get() { - return this[impl].username; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].username = V; - }, - enumerable: true, - configurable: true -}); +/***/ 770: +/***/ ((module, exports, __nccwpck_require__) => { -Object.defineProperty(URL.prototype, "password", { - get() { - return this[impl].password; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].password = V; - }, - enumerable: true, - configurable: true -}); +"use strict"; -Object.defineProperty(URL.prototype, "host", { - get() { - return this[impl].host; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].host = V; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(URL.prototype, "hostname", { - get() { - return this[impl].hostname; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].hostname = V; - }, - enumerable: true, - configurable: true -}); +var _interopRequireDefault = __nccwpck_require__(3286); -Object.defineProperty(URL.prototype, "port", { - get() { - return this[impl].port; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].port = V; - }, - enumerable: true, - configurable: true -}); +__nccwpck_require__(6880); -Object.defineProperty(URL.prototype, "pathname", { - get() { - return this[impl].pathname; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].pathname = V; - }, - enumerable: true, - configurable: true -}); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -Object.defineProperty(URL.prototype, "search", { - get() { - return this[impl].search; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].search = V; - }, - enumerable: true, - configurable: true -}); +__nccwpck_require__(1351); -Object.defineProperty(URL.prototype, "hash", { - get() { - return this[impl].hash; - }, - set(V) { - V = conversions["USVString"](V); - this[impl].hash = V; - }, - enumerable: true, - configurable: true -}); +__nccwpck_require__(4931); +var _punycode = _interopRequireDefault(__nccwpck_require__(5477)); -module.exports = { - is(obj) { - return !!obj && obj[impl] instanceof Impl.implementation; - }, - create(constructorArgs, privateData) { - let obj = Object.create(URL.prototype); - this.setup(obj, constructorArgs, privateData); - return obj; - }, - setup(obj, constructorArgs, privateData) { - if (!privateData) privateData = {}; - privateData.wrapper = obj; +var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); - obj[impl] = new Impl.implementation(constructorArgs, privateData); - obj[impl][utils.wrapperSymbol] = obj; - }, - interface: URL, - expose: { - Window: { URL: URL }, - Worker: { URL: URL } - } -}; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var MAX_DOMAIN_LABEL_LENGTH = 63; +var PUNYCODE_ENCODED_DOMAIN_PREFIX = 'xn--'; // This is an extremely lightweight implementation of domain name validation according to RFC 3490 +// Our regexes handle most of the cases well enough +// See https://tools.ietf.org/html/rfc3490#section-4.1 for details +var idna = { + toAscii: function toAscii(domain) { + if (domain.substring(0, 4) === PUNYCODE_ENCODED_DOMAIN_PREFIX && !domain.match(_validAsciiDomain["default"])) { + // Punycode encoded url cannot contain non ASCII characters + return; + } + var labels = domain.split('.'); -/***/ }), -/* 881 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + for (var i = 0; i < labels.length; i++) { + var label = labels[i]; -var core = __webpack_require__(245); -var global = __webpack_require__(300); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); + var punycodeEncodedLabel = _punycode["default"].toASCII(label); -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' -}); + if (punycodeEncodedLabel.length < 1 || punycodeEncodedLabel.length > MAX_DOMAIN_LABEL_LENGTH) { + // DNS label has invalid length + return; + } + } + return labels.join('.'); + } +}; +var _default = idna; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 882 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + +/***/ 8662: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var Type = __webpack_require__(755); +__nccwpck_require__(6880); -function resolveYamlBoolean(data) { - if (data === null) return false; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; - var max = data.length; +__nccwpck_require__(6764); - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); -} +__nccwpck_require__(7662); -function constructYamlBoolean(data) { - return data === 'true' || - data === 'True' || - data === 'TRUE'; -} +__nccwpck_require__(8074); -function isBoolean(object) { - return Object.prototype.toString.call(object) === '[object Boolean]'; -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Builds a RegExp +function _default(regex, map, flags) { + flags = flags || ''; -module.exports = new Type('tag:yaml.org,2002:bool', { - kind: 'scalar', - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } - }, - defaultStyle: 'lowercase' -}); + if (typeof regex !== 'string') { + if (regex.global && flags.indexOf('g') < 0) { + flags += 'g'; + } + + if (regex.ignoreCase && flags.indexOf('i') < 0) { + flags += 'i'; + } + + if (regex.multiline && flags.indexOf('m') < 0) { + flags += 'm'; + } + + regex = regex.source; + } + return new RegExp(regex.replace(/#\{(\w+)\}/g, function (match, name) { + var newRegex = map[name] || ''; -/***/ }), -/* 883 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + if (typeof newRegex !== 'string') { + newRegex = newRegex.source; + } -var global = __webpack_require__(300); -var core = __webpack_require__(245); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(209); -var defineProperty = __webpack_require__(973).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; + return newRegex; + }), flags); +} +module.exports = exports.default; /***/ }), -/* 884 */, -/* 885 */, -/* 886 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 1168: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = void 0; +})); +exports["default"] = _default; + +__nccwpck_require__(6764); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} -var bmpLetterAndMarks = /A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u052f\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07ca-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0-\u08b2\u08e4-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c81-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u103f\u1050-\u108f\u109a-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u180b-\u180d\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f\u1aa7\u1ab0-\u1abe\u1b00-\u1b4b\u1b6b-\u1b73\u1b80-\u1baf\u1bba-\u1bf3\u1c00-\u1c37\u1c4d-\u1c4f\u1c5a-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1cf8\u1cf9\u1d00-\u1df5\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u20d0-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2183\u2184\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005\u3006\u302a-\u302f\u3031-\u3035\u303b\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua672\ua674-\ua67d\ua67f-\ua69d\ua69f-\ua6e5\ua6f0\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c4\ua8e0-\ua8f7\ua8fb\ua90a-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf\ua9e0-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabea\uabec\uabed\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf870-\uf87f\uf882\uf884-\uf89f\uf8b8\uf8c1-\uf8d6\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2d\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc/; -var _default = bmpLetterAndMarks; -exports["default"] = _default; +// simple string interpolation +function _default(str, map) { + return str.replace(/#\{(\w+)\}/g, function (match, name) { + return map[name] || ''; + }); +} + module.exports = exports.default; /***/ }), -/* 887 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// 22.1.3.31 Array.prototype[@@unscopables] -var UNSCOPABLES = __webpack_require__(621)('unscopables'); -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(609)(ArrayProto, UNSCOPABLES, {}); -module.exports = function (key) { - ArrayProto[UNSCOPABLES][key] = true; -}; +/***/ 1543: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -/***/ }), -/* 888 */, -/* 889 */, -/* 890 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -"use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); +__nccwpck_require__(6880); -var MissingRefError = __webpack_require__(580).MissingRef; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -module.exports = compileAsync; +__nccwpck_require__(4931); +__nccwpck_require__(8074); -/** - * Creates validating function for passed schema with asynchronous loading of missing schemas. - * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped - * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function. - * @return {Promise} promise that resolves with a validating function. - */ -function compileAsync(schema, meta, callback) { - /* eslint no-shadow: 0 */ - /* global Promise */ - /* jshint validthis: true */ - var self = this; - if (typeof this._opts.loadSchema != 'function') - throw new Error('options.loadSchema should be a function'); +__nccwpck_require__(6764); - if (typeof meta == 'function') { - callback = meta; - meta = undefined; - } +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - var p = loadMetaSchemaOf(schema).then(function () { - var schemaObj = self._addSchema(schema, undefined, meta); - return schemaObj.validate || _compileAsync(schemaObj); - }); +var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); - if (callback) { - p.then( - function(v) { callback(null, v); }, - callback - ); - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, options) { + var displayUrl = entity.display_url; + var expandedUrl = entity.expanded_url; // Goal: If a user copies and pastes a tweet containing t.co'ed link, the resulting paste + // should contain the full original URL (expanded_url), not the display URL. + // + // Method: Whenever possible, we actually emit HTML that contains expanded_url, and use + // font-size:0 to hide those parts that should not be displayed (because they are not part of display_url). + // Elements with font-size:0 get copied even though they are not visible. + // Note that display:none doesn't work here. Elements with display:none don't get copied. + // + // Additionally, we want to *display* ellipses, but we don't want them copied. To make this happen we + // wrap the ellipses in a tco-ellipsis class and provide an onCopy handler that sets display:none on + // everything with the tco-ellipsis class. + // + // Exception: pic.twitter.com images, for which expandedUrl = "https://twitter.com/#!/username/status/1234/photo/1 + // For those URLs, display_url is not a substring of expanded_url, so we don't do anything special to render the elided parts. + // For a pic.twitter.com URL, the only elided part will be the "https://", so this is fine. + + var displayUrlSansEllipses = displayUrl.replace(/…/g, ''); // We have to disregard ellipses for matching + // Note: we currently only support eliding parts of the URL at the beginning or the end. + // Eventually we may want to elide parts of the URL in the *middle*. If so, this code will + // become more complicated. We will probably want to create a regexp out of display URL, + // replacing every ellipsis with a ".*". + + if (expandedUrl.indexOf(displayUrlSansEllipses) != -1) { + var displayUrlIndex = expandedUrl.indexOf(displayUrlSansEllipses); + var v = { + displayUrlSansEllipses: displayUrlSansEllipses, + // Portion of expandedUrl that precedes the displayUrl substring + beforeDisplayUrl: expandedUrl.substr(0, displayUrlIndex), + // Portion of expandedUrl that comes after displayUrl + afterDisplayUrl: expandedUrl.substr(displayUrlIndex + displayUrlSansEllipses.length), + precedingEllipsis: displayUrl.match(/^…/) ? '…' : '', + followingEllipsis: displayUrl.match(/…$/) ? '…' : '' + }; - return p; + for (var k in v) { + if (v.hasOwnProperty(k)) { + v[k] = (0, _htmlEscape["default"])(v[k]); + } + } // As an example: The user tweets "hi http://longdomainname.com/foo" + // This gets shortened to "hi http://t.co/xyzabc", with display_url = "…nname.com/foo" + // This will get rendered as: + // + // … + // + // http://longdomai + // + // + // nname.com/foo + // + // + //   + // … + // - function loadMetaSchemaOf(sch) { - var $schema = sch.$schema; - return $schema && !self.getSchema($schema) - ? compileAsync.call(self, { $ref: $schema }, true) - : Promise.resolve(); + v['invisible'] = options.invisibleTagAttrs; + return (0, _stringSupplant["default"])("#{precedingEllipsis} #{beforeDisplayUrl}#{displayUrlSansEllipses}#{afterDisplayUrl} #{followingEllipsis}", v); } + return displayUrl; +} - function _compileAsync(schemaObj) { - try { return self._compile(schemaObj); } - catch(e) { - if (e instanceof MissingRefError) return loadMissingSchema(e); - throw e; - } +module.exports = exports.default; +/***/ }), - function loadMissingSchema(e) { - var ref = e.missingSchema; - if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved'); +/***/ 5583: +/***/ ((module, exports, __nccwpck_require__) => { - var schemaPromise = self._loadingSchemas[ref]; - if (!schemaPromise) { - schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref); - schemaPromise.then(removePromise, removePromise); - } +"use strict"; - return schemaPromise.then(function (sch) { - if (!added(ref)) { - return loadMetaSchemaOf(sch).then(function () { - if (!added(ref)) self.addSchema(sch, ref, undefined, meta); - }); - } - }).then(function() { - return _compileAsync(schemaObj); - }); - function removePromise() { - delete self._loadingSchemas[ref]; - } +var _interopRequireDefault = __nccwpck_require__(3286); - function added(ref) { - return self._refs[ref] || self._schemas[ref]; - } - } - } -} +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -/***/ }), -/* 891 */, -/* 892 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +var _clone = _interopRequireDefault(__nccwpck_require__(2105)); -"use strict"; -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); -var net = __webpack_require__(631); -var urlParse = __webpack_require__(835).parse; -var util = __webpack_require__(669); -var pubsuffix = __webpack_require__(519); -var Store = __webpack_require__(627).Store; -var MemoryCookieStore = __webpack_require__(349).MemoryCookieStore; -var pathMatch = __webpack_require__(54).pathMatch; -var VERSION = __webpack_require__(158).version; +var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); -var punycode; -try { - punycode = __webpack_require__(213); -} catch(e) { - console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization"); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var cashtag = (0, _htmlEscape["default"])(entity.cashtag); + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs.href = options.cashtagUrlBase + cashtag; + attrs.title = "$".concat(cashtag); + attrs['class'] = options.cashtagClass; + + if (options.targetBlank) { + attrs.target = '_blank'; + } + + return (0, _linkToTextWithSymbol["default"])(entity, '$', cashtag, attrs, options); } -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; +module.exports = exports.default; -var CONTROL_CHARS = /[\x00-\x1F]/; +/***/ }), -// From Chromium // '\r', '\n' and '\0' should be treated as a terminator in -// the "relaxed" mode, see: -// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60 -var TERMINATORS = ['\n', '\r', '\0']; +/***/ 5537: +/***/ ((module, exports, __nccwpck_require__) => { -// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; +"use strict"; -// date-time parsing constants (RFC6265 S5.1.1) -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; +var _interopRequireDefault = __nccwpck_require__(3286); -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, - jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; +__nccwpck_require__(6880); -var MAX_TIME = 2147483647000; // 31-bit max -var MIN_TIME = 0; // 31-bit min +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -/* - * Parses a Natural number (i.e., non-negative integer) with either the - * *DIGIT ( non-digit *OCTET ) - * or - * *DIGIT - * grammar (RFC6265 S5.1.1). - * - * The "trailingOK" boolean controls if the grammar accepts a - * "( non-digit *OCTET )" trailer. - */ -function parseDigits(token, minDigits, maxDigits, trailingOK) { - var count = 0; - while (count < token.length) { - var c = token.charCodeAt(count); - // "non-digit = %x00-2F / %x3A-FF" - if (c <= 0x2F || c >= 0x3A) { - break; - } - count++; - } +__nccwpck_require__(4931); - // constrain to a minimum and maximum number of digits. - if (count < minDigits || count > maxDigits) { - return null; - } +var _clone = _interopRequireDefault(__nccwpck_require__(2105)); - if (!trailingOK && count != token.length) { - return null; - } +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - return parseInt(token.substr(0,count), 10); -} +var _rtlChars = _interopRequireDefault(__nccwpck_require__(6462)); -function parseTime(token) { - var parts = token.split(':'); - var result = [0,0,0]; +var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); - /* RF6256 S5.1.1: - * time = hms-time ( non-digit *OCTET ) - * hms-time = time-field ":" time-field ":" time-field - * time-field = 1*2DIGIT - */ +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var hash = text.substring(entity.indices[0], entity.indices[0] + 1); + var hashtag = (0, _htmlEscape["default"])(entity.hashtag); + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs.href = options.hashtagUrlBase + hashtag; + attrs.title = "#".concat(hashtag); + attrs['class'] = options.hashtagClass; - if (parts.length !== 3) { - return null; + if (hashtag.charAt(0).match(_rtlChars["default"])) { + attrs['class'] += ' rtl'; } - for (var i = 0; i < 3; i++) { - // "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be - // followed by "( non-digit *OCTET )" so therefore the last time-field can - // have a trailer - var trailingOK = (i == 2); - var num = parseDigits(parts[i], 1, 2, trailingOK); - if (num === null) { - return null; - } - result[i] = num; + if (options.targetBlank) { + attrs.target = '_blank'; } - return result; + return (0, _linkToTextWithSymbol["default"])(entity, hash, hashtag, attrs, options); } -function parseMonth(token) { - token = String(token).substr(0,3).toLowerCase(); - var num = MONTH_TO_NUM[token]; - return num >= 0 ? num : null; -} +module.exports = exports.default; -/* - * RFC6265 S5.1.1 date parser (see RFC for full grammar) - */ -function parseDate(str) { - if (!str) { - return; - } +/***/ }), - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) { - return; - } +/***/ 8702: +/***/ ((module, exports, __nccwpck_require__) => { - var hour = null; - var minute = null; - var second = null; - var dayOfMonth = null; - var month = null; - var year = null; +"use strict"; - for (var i=0; i= 70 && year <= 99) { - year += 1900; - } else if (year >= 0 && year <= 69) { - year += 2000; - } - } - } +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); + +var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var at = text.substring(entity.indices[0], entity.indices[0] + 1); + var user = (0, _htmlEscape["default"])(entity.screenName); + var slashListname = (0, _htmlEscape["default"])(entity.listSlug); + var isList = entity.listSlug && !options.suppressLists; + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs['class'] = isList ? options.listClass : options.usernameClass; + attrs.href = isList ? options.listUrlBase + user + slashListname : options.usernameUrlBase + user; + + if (!isList && !options.suppressDataScreenName) { + attrs['data-screen-name'] = user; } - /* RFC 6265 S5.1.1 - * "5. Abort these steps and fail to parse the cookie-date if: - * * at least one of the found-day-of-month, found-month, found- - * year, or found-time flags is not set, - * * the day-of-month-value is less than 1 or greater than 31, - * * the year-value is less than 1601, - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - * (Note that leap seconds cannot be represented in this syntax.)" - * - * So, in order as above: - */ - if ( - dayOfMonth === null || month === null || year === null || second === null || - dayOfMonth < 1 || dayOfMonth > 31 || - year < 1601 || - hour > 23 || - minute > 59 || - second > 59 - ) { - return; + if (options.targetBlank) { + attrs.target = '_blank'; } - return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second)); -} + return (0, _linkToTextWithSymbol["default"])(entity, at, isList ? user + slashListname : user, attrs, options); +} + +module.exports = exports.default; + +/***/ }), + +/***/ 3390: +/***/ ((module, exports, __nccwpck_require__) => { -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} +"use strict"; -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) { - return null; - } - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) { - str = punycode.toASCII(str); - } +var _interopRequireDefault = __nccwpck_require__(3286); - return str.toLowerCase(); -} +__nccwpck_require__(6880); -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) { - return null; - } - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) { - return true; - } +var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ +var _tagAttrs = _interopRequireDefault(__nccwpck_require__(3995)); - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) { - return false; - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, attributes, options) { + if (!options.suppressNoFollow) { + attributes.rel = 'nofollow'; + } // if linkAttributeBlock is specified, call it to modify the attributes - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) { - return false; // it's a non-match (-1) or prefix (0) - } - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) { // it's not a suffix - return false; - } + if (options.linkAttributeBlock) { + options.linkAttributeBlock(entity, attributes); + } // if linkTextBlock is specified, call it to get a new/modified link text - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') { - return false; + + if (options.linkTextBlock) { + text = options.linkTextBlock(entity, text); } - return true; + var d = { + text: text, + attr: (0, _tagAttrs["default"])(attributes) + }; + return (0, _stringSupplant["default"])('#{text}', d); } +module.exports = exports.default; -// RFC6265 S5.1.4 Paths and Path-Match +/***/ }), -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") { - return "/"; - } +/***/ 3673: +/***/ ((module, exports, __nccwpck_require__) => { - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") { - return path; - } +"use strict"; - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) { - return "/"; - } - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} +var _interopRequireDefault = __nccwpck_require__(3286); -function trimTerminator(str) { - for (var t = 0; t < TERMINATORS.length; t++) { - var terminatorIdx = str.indexOf(TERMINATORS[t]); - if (terminatorIdx !== -1) { - str = str.substr(0,terminatorIdx); - } - } +__nccwpck_require__(6880); - return str; -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -function parseCookiePair(cookiePair, looseMode) { - cookiePair = trimTerminator(cookiePair); +__nccwpck_require__(4931); - var firstEq = cookiePair.indexOf('='); - if (looseMode) { - if (firstEq === 0) { // '=' is immediately at start - cookiePair = cookiePair.substr(1); - firstEq = cookiePair.indexOf('='); // might still need to split on '=' - } - } else { // non-loose mode - if (firstEq <= 0) { // no '=' or is at start - return; // needs to have non-empty "cookie-name" - } - } +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); - var cookieName, cookieValue; - if (firstEq <= 0) { - cookieName = ""; - cookieValue = cookiePair.trim(); - } else { - cookieName = cookiePair.substr(0, firstEq).trim(); - cookieValue = cookiePair.substr(firstEq+1).trim(); - } +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { - return; - } +var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); - var c = new Cookie(); - c.key = cookieName; - c.value = cookieValue; - return c; -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, symbol, text, attributes, options) { + var taggedSymbol = options.symbolTag ? "<".concat(options.symbolTag, ">").concat(symbol, "") : symbol; + text = (0, _htmlEscape["default"])(text); + var taggedText = options.textWithSymbolTag ? "<".concat(options.textWithSymbolTag, ">").concat(text, "") : text; -function parse(str, options) { - if (!options || typeof options !== 'object') { - options = {}; + if (options.usernameIncludeSymbol || !symbol.match(_atSigns["default"])) { + return (0, _linkToText["default"])(entity, taggedSymbol + taggedText, attributes, options); + } else { + return taggedSymbol + (0, _linkToText["default"])(entity, taggedText, attributes, options); } - str = str.trim(); +} - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi); - var c = parseCookiePair(cookiePair, !!options.loose); - if (!c) { - return; - } +module.exports = exports.default; - if (firstSemi === -1) { - return c; - } +/***/ }), - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi + 1).trim(); +/***/ 1656: +/***/ ((module, exports, __nccwpck_require__) => { - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) { - return c; - } +"use strict"; - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(';'); - while (cookie_avs.length) { - var av = cookie_avs.shift().trim(); - if (av.length === 0) { // happens if ";;" appears - continue; - } - var av_sep = av.indexOf('='); - var av_key, av_value; - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } +var _interopRequireDefault = __nccwpck_require__(3286); - av_key = av_key.trim().toLowerCase(); +__nccwpck_require__(6880); - if (av_value) { - av_value = av_value.trim(); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; - switch(av_key) { - case 'expires': // S5.2.1 - if (av_value) { - var exp = parseDate(av_value); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp) { - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - c.expires = exp; - } - } - break; +__nccwpck_require__(4931); - case 'max-age': // S5.2.2 - if (av_value) { - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (/^-?[0-9]+$/.test(av_value)) { - var delta = parseInt(av_value, 10); - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - } - } - break; +var _clone = _interopRequireDefault(__nccwpck_require__(2105)); - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (av_value) { - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./, ''); - if (domain) { - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - } - } - break; +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - c.path = av_value && av_value[0] === "/" ? av_value : null; - break; +var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - c.secure = true; - break; +var _linkTextWithEntity = _interopRequireDefault(__nccwpck_require__(1543)); - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - c.httpOnly = true; - break; +var _urlHasProtocol = _interopRequireDefault(__nccwpck_require__(2025)); - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var url = entity.url; + var displayUrl = url; + var linkText = (0, _htmlEscape["default"])(displayUrl); // If the caller passed a urlEntities object (provided by a Twitter API + // response with include_entities=true), we use that to render the display_url + // for each URL instead of it's underlying t.co URL. - return c; -} + var urlEntity = options.urlEntities && options.urlEntities[url] || entity; -// avoid the V8 deoptimization monster! -function jsonParse(str) { - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return e; + if (urlEntity.display_url) { + linkText = (0, _linkTextWithEntity["default"])(urlEntity, options); } - return obj; -} -function fromJSON(str) { - if (!str) { - return null; - } + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - var obj; - if (typeof str === 'string') { - obj = jsonParse(str); - if (obj instanceof Error) { - return null; - } - } else { - // assume it's an Object - obj = str; + if (!url.match(_urlHasProtocol["default"])) { + url = "http://".concat(url); } - var c = new Cookie(); - for (var i=0; i 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) { - break; - } - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} +module.exports = exports.default; -function getCookieContext(url) { - if (url instanceof Object) { - return url; - } - // NOTE: decodeURI will throw on malformed URIs (see GH-32). - // Therefore, we will just skip decoding for such URIs. - try { - url = decodeURI(url); - } - catch(err) { - // Silently swallow error - } +/***/ }), - return urlParse(url); -} +/***/ 9403: +/***/ ((module, exports, __nccwpck_require__) => { -function Cookie(options) { - options = options || {}; +"use strict"; - Object.keys(options).forEach(function(prop) { - if (Cookie.prototype.hasOwnProperty(prop) && - Cookie.prototype[prop] !== options[prop] && - prop.substr(0,1) !== '_') - { - this[prop] = options[prop]; - } - }, this); - this.creation = this.creation || new Date(); +var _interopRequireDefault = __nccwpck_require__(3286); - // used to break creation ties in cookieCompare(): - Object.defineProperty(this, 'creationIndex', { - configurable: false, - enumerable: false, // important for assert.deepEqual checks - writable: true, - value: ++Cookie.cookiesCreated - }); +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(6954)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, entities) { + (0, _convertUnicodeIndices["default"])(text, entities, true); } -Cookie.cookiesCreated = 0; // incremented each time a cookie is created +module.exports = exports.default; + +/***/ }), -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; +/***/ 1614: +/***/ ((module, exports, __nccwpck_require__) => { -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; +"use strict"; -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set -Object.defineProperty(Cookie.prototype, 'creationIndex', { - configurable: true, - enumerable: false, - writable: true, - value: 0 -}); +var _interopRequireDefault = __nccwpck_require__(3286); -Cookie.serializableProperties = Object.keys(Cookie.prototype) - .filter(function(prop) { - return !( - Cookie.prototype[prop] instanceof Function || - prop === 'creationIndex' || - prop.substr(0,1) === '_' - ); - }); +__nccwpck_require__(6880); -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -// Use the new custom inspection symbol to add the custom inspect function if -// available. -if (util.inspect.custom) { - Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect; +var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(6954)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, entities) { + (0, _convertUnicodeIndices["default"])(text, entities, false); } -Cookie.prototype.toJSON = function() { - var obj = {}; +module.exports = exports.default; - var props = Cookie.serializableProperties; - for (var i=0; i { - return obj; -}; +"use strict"; -Cookie.prototype.clone = function() { - return fromJSON(this.toJSON()); -}; -Cookie.prototype.validate = function validate() { - if (!COOKIE_OCTETS.test(this.value)) { - return false; - } - if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires)) { - return false; - } - if (this.maxAge != null && this.maxAge <= 0) { - return false; // "Max-Age=" non-zero-digit *DIGIT - } - if (this.path != null && !PATH_VALUE.test(this.path)) { - return false; - } +var _interopRequireDefault = __nccwpck_require__(3286); - var cdomain = this.cdomain(); - if (cdomain) { - if (cdomain.match(/\.$/)) { - return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this - } - var suffix = pubsuffix.getPublicSuffix(cdomain); - if (suffix == null) { // it's a public suffix - return false; - } - } - return true; -}; +__nccwpck_require__(6880); -Cookie.prototype.setExpires = function setExpires(exp) { - if (exp instanceof Date) { - this.expires = exp; - } else { - this.expires = parseDate(exp) || "Infinity"; - } -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -Cookie.prototype.setMaxAge = function setMaxAge(age) { - if (age === Infinity || age === -Infinity) { - this.maxAge = age.toString(); // so JSON.stringify() works - } else { - this.maxAge = age; - } -}; +__nccwpck_require__(3771); -// gives Cookie header format -Cookie.prototype.cookieString = function cookieString() { - var val = this.value; - if (val == null) { - val = ''; - } - if (this.key === '') { - return val; - } - return this.key+'='+val; -}; +__nccwpck_require__(230); + +__nccwpck_require__(3938); + +__nccwpck_require__(571); + +__nccwpck_require__(7103); + +var _configs = _interopRequireDefault(__nccwpck_require__(6290)); + +var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + +var _getCharacterWeight = _interopRequireDefault(__nccwpck_require__(8606)); + +var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); + +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); -// gives Set-Cookie header format -Cookie.prototype.toString = function toString() { - var str = this.cookieString(); +var _twemojiParser = __nccwpck_require__(829); - if (this.expires != Infinity) { - if (this.expires instanceof Date) { - str += '; Expires='+formatDate(this.expires); - } else { - str += '; Expires='+this.expires; - } - } +var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); - if (this.maxAge != null && this.maxAge != Infinity) { - str += '; Max-Age='+this.maxAge; - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// TODO: WEB-19861 Replace with public package after it is open sourced - if (this.domain && !this.hostOnly) { - str += '; Domain='+this.domain; - } - if (this.path) { - str += '; Path='+this.path; - } +/** + * [parseTweet description] + * @param {string} text tweet text to parse + * @param {Object} options config options to pass + * @return {Object} Fields in response described below: + * + * Response fields: + * weightedLength {int} the weighted length of tweet based on weights specified in the config + * valid {bool} If tweet is valid + * permillage {float} permillage of the tweet over the max length specified in config + * validRangeStart {int} beginning of valid text + * validRangeEnd {int} End index of valid part of the tweet text (inclusive) in utf16 + * displayRangeStart {int} beginning index of display text + * displayRangeEnd {int} end index of display text (inclusive) in utf16 + */ +var parseTweet = function parseTweet() { + var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + var mergedOptions = Object.keys(options).length ? options : _configs["default"].defaults; + var defaultWeight = mergedOptions.defaultWeight, + emojiParsingEnabled = mergedOptions.emojiParsingEnabled, + scale = mergedOptions.scale, + maxWeightedTweetLength = mergedOptions.maxWeightedTweetLength, + transformedURLLength = mergedOptions.transformedURLLength; + var normalizedText = typeof String.prototype.normalize === 'function' ? text.normalize() : text; // Hash all entities by their startIndex for fast lookup - if (this.secure) { - str += '; Secure'; - } - if (this.httpOnly) { - str += '; HttpOnly'; - } - if (this.extensions) { - this.extensions.forEach(function(ext) { - str += '; '+ext; - }); - } + var urlEntitiesMap = transformEntitiesToHash((0, _extractUrlsWithIndices["default"])(normalizedText)); + var emojiEntitiesMap = emojiParsingEnabled ? transformEntitiesToHash((0, _twemojiParser.parse)(normalizedText)) : []; + var tweetLength = normalizedText.length; + var weightedLength = 0; + var validDisplayIndex = 0; + var valid = true; // Go through every character and calculate weight - return str; -}; + for (var charIndex = 0; charIndex < tweetLength; charIndex++) { + // If a url begins at the specified index handle, add constant length + if (urlEntitiesMap[charIndex]) { + var _urlEntitiesMap$charI = urlEntitiesMap[charIndex], + url = _urlEntitiesMap$charI.url, + indices = _urlEntitiesMap$charI.indices; + weightedLength += transformedURLLength * scale; + charIndex += url.length - 1; + } else if (emojiParsingEnabled && emojiEntitiesMap[charIndex]) { + var _emojiEntitiesMap$cha = emojiEntitiesMap[charIndex], + emoji = _emojiEntitiesMap$cha.text, + _indices = _emojiEntitiesMap$cha.indices; + weightedLength += defaultWeight; + charIndex += emoji.length - 1; + } else { + charIndex += isSurrogatePair(normalizedText, charIndex) ? 1 : 0; + weightedLength += (0, _getCharacterWeight["default"])(normalizedText.charAt(charIndex), mergedOptions); + } // Only test for validity of character if it is still valid -// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -// S5.3 says to give the "latest representable date" for which we use Infinity -// For "expired" we use 0 -Cookie.prototype.TTL = function TTL(now) { - /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires - * attribute, the Max-Age attribute has precedence and controls the - * expiration date of the cookie. - * (Concurs with S5.3 step 3) - */ - if (this.maxAge != null) { - return this.maxAge<=0 ? 0 : this.maxAge*1000; - } - var expires = this.expires; - if (expires != Infinity) { - if (!(expires instanceof Date)) { - expires = parseDate(expires) || Infinity; + if (valid) { + valid = !(0, _hasInvalidCharacters["default"])(normalizedText.substring(charIndex, charIndex + 1)); } - if (expires == Infinity) { - return Infinity; + if (valid && weightedLength <= maxWeightedTweetLength * scale) { + validDisplayIndex = charIndex; } - - return expires.getTime() - (now || Date.now()); } - return Infinity; + weightedLength = weightedLength / scale; + valid = valid && weightedLength > 0 && weightedLength <= maxWeightedTweetLength; + var permillage = Math.floor(weightedLength / maxWeightedTweetLength * 1000); + var normalizationOffset = text.length - normalizedText.length; + validDisplayIndex += normalizationOffset; + return { + weightedLength: weightedLength, + valid: valid, + permillage: permillage, + validRangeStart: 0, + validRangeEnd: validDisplayIndex, + displayRangeStart: 0, + displayRangeEnd: text.length > 0 ? text.length - 1 : 0 + }; }; -// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -Cookie.prototype.expiryTime = function expiryTime(now) { - if (this.maxAge != null) { - var relativeTo = now || this.creation || new Date(); - var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000; - return relativeTo.getTime() + age; - } - - if (this.expires == Infinity) { - return Infinity; - } - return this.expires.getTime(); +var transformEntitiesToHash = function transformEntitiesToHash(entities) { + return entities.reduce(function (map, entity) { + map[entity.indices[0]] = entity; + return map; + }, {}); }; -// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere), except it returns a Date -Cookie.prototype.expiryDate = function expiryDate(now) { - var millisec = this.expiryTime(now); - if (millisec == Infinity) { - return new Date(MAX_TIME); - } else if (millisec == -Infinity) { - return new Date(MIN_TIME); - } else { - return new Date(millisec); +var isSurrogatePair = function isSurrogatePair(text, cIndex) { + // Test if a character is the beginning of a surrogate pair + if (cIndex < text.length - 1) { + var c = text.charCodeAt(cIndex); + var cNext = text.charCodeAt(cIndex + 1); + return 0xd800 <= c && c <= 0xdbff && 0xdc00 <= cNext && cNext <= 0xdfff; } -}; -// This replaces the "persistent-flag" parts of S5.3 step 3 -Cookie.prototype.isPersistent = function isPersistent() { - return (this.maxAge != null || this.expires != Infinity); + return false; }; -// Mostly S5.1.2 and S5.2.3: -Cookie.prototype.cdomain = -Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() { - if (this.domain == null) { - return null; - } - return canonicalDomain(this.domain); -}; +var _default = parseTweet; +exports["default"] = _default; +module.exports = exports.default; -function CookieJar(store, options) { - if (typeof options === "boolean") { - options = {rejectPublicSuffixes: options}; - } else if (options == null) { - options = {}; - } - if (options.rejectPublicSuffixes != null) { - this.rejectPublicSuffixes = options.rejectPublicSuffixes; - } - if (options.looseMode != null) { - this.enableLooseMode = options.looseMode; - } +/***/ }), - if (!store) { - store = new MemoryCookieStore(); - } - this.store = store; -} -CookieJar.prototype.store = null; -CookieJar.prototype.rejectPublicSuffixes = true; -CookieJar.prototype.enableLooseMode = false; -var CAN_BE_SYNC = []; +/***/ 4079: +/***/ ((module, exports, __nccwpck_require__) => { -CAN_BE_SYNC.push('setCookie'); -CookieJar.prototype.setCookie = function(cookie, url, options, cb) { - var err; - var context = getCookieContext(url); - if (options instanceof Function) { - cb = options; - options = {}; - } +"use strict"; - var host = canonicalDomain(context.hostname); - var loose = this.enableLooseMode; - if (options.loose != null) { - loose = options.loose; - } - // S5.3 step 1 - if (!(cookie instanceof Cookie)) { - cookie = Cookie.parse(cookie, { loose: loose }); - } - if (!cookie) { - err = new Error("Cookie failed to parse"); - return cb(options.ignoreError ? null : err); - } +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} +var astralLetterAndMarks = /\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf30-\udf40\udf42-\udf49\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48]|\ud804[\udc00-\udc46\udc7f-\udcba\udcd0-\udce8\udd00-\udd34\udd50-\udd73\udd76\udd80-\uddc4\uddda\ude00-\ude11\ude13-\ude37\udeb0-\udeea\udf01-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc80-\udcc5\udcc7\udd80-\uddb5\uddb8-\uddc0\ude00-\ude40\ude44\ude80-\udeb7]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud808[\udc00-\udf98]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud83a[\udc00-\udcc4\udcd0-\udcd6]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef]/; +var _default = astralLetterAndMarks; +exports["default"] = _default; +module.exports = exports.default; - // S5.3 step 2 - var now = options.now || new Date(); // will assign later to save effort in the face of errors +/***/ }), - // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie() +/***/ 777: +/***/ ((module, exports, __nccwpck_require__) => { - // S5.3 step 4: NOOP; domain is null by default +"use strict"; - // S5.3 step 5: public suffixes - if (this.rejectPublicSuffixes && cookie.domain) { - var suffix = pubsuffix.getPublicSuffix(cookie.cdomain()); - if (suffix == null) { // e.g. "com" - err = new Error("Cookie has domain set to a public suffix"); - return cb(options.ignoreError ? null : err); - } - } - // S5.3 step 6: - if (cookie.domain) { - if (!domainMatch(host, cookie.cdomain(), false)) { - err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host); - return cb(options.ignoreError ? null : err); - } +__nccwpck_require__(6880); - if (cookie.hostOnly == null) { // don't reset if already set - cookie.hostOnly = false; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var astralNumerals = /\ud801[\udca0-\udca9]|\ud804[\udc66-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udef0-\udef9]|\ud805[\udcd0-\udcd9\ude50-\ude59\udec0-\udec9]|\ud806[\udce0-\udce9]|\ud81a[\ude60-\ude69\udf50-\udf59]|\ud835[\udfce-\udfff]/; +var _default = astralNumerals; +exports["default"] = _default; +module.exports = exports.default; - } else { - cookie.hostOnly = true; - cookie.domain = host; - } +/***/ }), - //S5.2.4 If the attribute-value is empty or if the first character of the - //attribute-value is not %x2F ("/"): - //Let cookie-path be the default-path. - if (!cookie.path || cookie.path[0] !== '/') { - cookie.path = defaultPath(context.pathname); - cookie.pathIsDefault = true; - } +/***/ 6683: +/***/ ((module, exports, __nccwpck_require__) => { - // S5.3 step 8: NOOP; secure attribute - // S5.3 step 9: NOOP; httpOnly attribute +"use strict"; - // S5.3 step 10 - if (options.http === false && cookie.httpOnly) { - err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - var store = this.store; +__nccwpck_require__(6880); - if (!store.updateCookie) { - store.updateCookie = function(oldCookie, newCookie, cb) { - this.putCookie(newCookie, cb); - }; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var atSigns = /[@@]/; +var _default = atSigns; +exports["default"] = _default; +module.exports = exports.default; - function withCookie(err, oldCookie) { - if (err) { - return cb(err); - } +/***/ }), - var next = function(err) { - if (err) { - return cb(err); - } else { - cb(null, cookie); - } - }; +/***/ 797: +/***/ ((module, exports, __nccwpck_require__) => { - if (oldCookie) { - // S5.3 step 11 - "If the cookie store contains a cookie with the same name, - // domain, and path as the newly created cookie:" - if (options.http === false && oldCookie.httpOnly) { // step 11.2 - err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - cookie.creation = oldCookie.creation; // step 11.3 - cookie.creationIndex = oldCookie.creationIndex; // preserve tie-breaker - cookie.lastAccessed = now; - // Step 11.4 (delete cookie) is implied by just setting the new one: - store.updateCookie(oldCookie, cookie, next); // step 12 +"use strict"; - } else { - cookie.creation = cookie.lastAccessed = now; - store.putCookie(cookie, next); // step 12 - } - } - store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie); -}; +__nccwpck_require__(6880); -// RFC6365 S5.4 -CAN_BE_SYNC.push('getCookies'); -CookieJar.prototype.getCookies = function(url, options, cb) { - var context = getCookieContext(url); - if (options instanceof Function) { - cb = options; - options = {}; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} +var bmpLetterAndMarks = /A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u052f\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07ca-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0-\u08b2\u08e4-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c81-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u103f\u1050-\u108f\u109a-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u180b-\u180d\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f\u1aa7\u1ab0-\u1abe\u1b00-\u1b4b\u1b6b-\u1b73\u1b80-\u1baf\u1bba-\u1bf3\u1c00-\u1c37\u1c4d-\u1c4f\u1c5a-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1cf8\u1cf9\u1d00-\u1df5\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u20d0-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2183\u2184\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005\u3006\u302a-\u302f\u3031-\u3035\u303b\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua672\ua674-\ua67d\ua67f-\ua69d\ua69f-\ua6e5\ua6f0\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c4\ua8e0-\ua8f7\ua8fb\ua90a-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf\ua9e0-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabea\uabec\uabed\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf870-\uf87f\uf882\uf884-\uf89f\uf8b8\uf8c1-\uf8d6\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2d\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc/; +var _default = bmpLetterAndMarks; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), - var host = canonicalDomain(context.hostname); - var path = context.pathname || '/'; +/***/ 9376: +/***/ ((module, exports, __nccwpck_require__) => { - var secure = options.secure; - if (secure == null && context.protocol && - (context.protocol == 'https:' || context.protocol == 'wss:')) - { - secure = true; - } +"use strict"; - var http = options.http; - if (http == null) { - http = true; - } - var now = options.now || Date.now(); - var expireCheck = options.expire !== false; - var allPaths = !!options.allPaths; - var store = this.store; +__nccwpck_require__(6880); - function matchingCookie(c) { - // "Either: - // The cookie's host-only-flag is true and the canonicalized - // request-host is identical to the cookie's domain. - // Or: - // The cookie's host-only-flag is false and the canonicalized - // request-host domain-matches the cookie's domain." - if (c.hostOnly) { - if (c.domain != host) { - return false; - } - } else { - if (!domainMatch(host, c.domain, false)) { - return false; - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var bmpNumerals = /0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19/; +var _default = bmpNumerals; +exports["default"] = _default; +module.exports = exports.default; - // "The request-uri's path path-matches the cookie's path." - if (!allPaths && !pathMatch(path, c.path)) { - return false; - } +/***/ }), - // "If the cookie's secure-only-flag is true, then the request-uri's - // scheme must denote a "secure" protocol" - if (c.secure && !secure) { - return false; - } +/***/ 1277: +/***/ ((module, exports, __nccwpck_require__) => { - // "If the cookie's http-only-flag is true, then exclude the cookie if the - // cookie-string is being generated for a "non-HTTP" API" - if (c.httpOnly && !http) { - return false; - } +"use strict"; - // deferred from S5.3 - // non-RFC: allow retention of expired cookies by choice - if (expireCheck && c.expiryTime() <= now) { - store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored - return false; - } - return true; - } +__nccwpck_require__(6880); - store.findCookies(host, allPaths ? null : path, function(err,cookies) { - if (err) { - return cb(err); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var cashtag = /[a-z]{1,6}(?:[._][a-z]{1,2})?/i; +var _default = cashtag; +exports["default"] = _default; +module.exports = exports.default; - cookies = cookies.filter(matchingCookie); +/***/ }), - // sorting of S5.4 part 2 - if (options.sort !== false) { - cookies = cookies.sort(cookieCompare); - } +/***/ 5594: +/***/ ((module, exports, __nccwpck_require__) => { - // S5.4 part 3 - var now = new Date(); - cookies.forEach(function(c) { - c.lastAccessed = now; - }); - // TODO persist lastAccessed +"use strict"; - cb(null,cookies); - }); -}; -CAN_BE_SYNC.push('getCookieString'); -CookieJar.prototype.getCookieString = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) { - cb(err); - } else { - cb(null, cookies - .sort(cookieCompare) - .map(function(c){ - return c.cookieString(); - }) - .join('; ')); - } - }; - args.push(next); - this.getCookies.apply(this,args); -}; +__nccwpck_require__(6880); -CAN_BE_SYNC.push('getSetCookieStrings'); -CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) { - cb(err); - } else { - cb(null, cookies.map(function(c){ - return c.toString(); - })); - } - }; - args.push(next); - this.getCookies.apply(this,args); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var codePoint = /(?:[^\uD800-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF])/; +var _default = codePoint; +exports["default"] = _default; +module.exports = exports.default; -CAN_BE_SYNC.push('serialize'); -CookieJar.prototype.serialize = function(cb) { - var type = this.store.constructor.name; - if (type === 'Object') { - type = null; - } +/***/ }), - // update README.md "Serialization Format" if you change this, please! - var serialized = { - // The version of tough-cookie that serialized this jar. Generally a good - // practice since future versions can make data import decisions based on - // known past behavior. When/if this matters, use `semver`. - version: 'tough-cookie@'+VERSION, +/***/ 3863: +/***/ ((module, exports, __nccwpck_require__) => { - // add the store type, to make humans happy: - storeType: type, +"use strict"; - // CookieJar configuration: - rejectPublicSuffixes: !!this.rejectPublicSuffixes, - // this gets filled from getAllCookies: - cookies: [] - }; +__nccwpck_require__(6880); - if (!(this.store.getAllCookies && - typeof this.store.getAllCookies === 'function')) - { - return cb(new Error('store does not support getAllCookies and cannot be serialized')); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var cyrillicLettersAndMarks = /\u0400-\u04FF/; +var _default = cyrillicLettersAndMarks; +exports["default"] = _default; +module.exports = exports.default; - this.store.getAllCookies(function(err,cookies) { - if (err) { - return cb(err); - } +/***/ }), - serialized.cookies = cookies.map(function(cookie) { - // convert to serialized 'raw' cookies - cookie = (cookie instanceof Cookie) ? cookie.toJSON() : cookie; +/***/ 6138: +/***/ ((module, exports, __nccwpck_require__) => { - // Remove the index so new ones get assigned during deserialization - delete cookie.creationIndex; +"use strict"; - return cookie; - }); - return cb(null, serialized); - }); -}; +__nccwpck_require__(6880); -// well-known name that JSON.stringify calls -CookieJar.prototype.toJSON = function() { - return this.serializeSync(); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var directionalMarkersGroup = /\u202A-\u202E\u061C\u200E\u200F\u2066\u2067\u2068\u2069/; +var _default = directionalMarkersGroup; +exports["default"] = _default; +module.exports = exports.default; -// use the class method CookieJar.deserialize instead of calling this directly -CAN_BE_SYNC.push('_importCookies'); -CookieJar.prototype._importCookies = function(serialized, cb) { - var jar = this; - var cookies = serialized.cookies; - if (!cookies || !Array.isArray(cookies)) { - return cb(new Error('serialized jar has no cookies array')); - } - cookies = cookies.slice(); // do not modify the original +/***/ }), - function putNext(err) { - if (err) { - return cb(err); - } +/***/ 1226: +/***/ ((module, exports, __nccwpck_require__) => { - if (!cookies.length) { - return cb(err, jar); - } +"use strict"; - var cookie; - try { - cookie = fromJSON(cookies.shift()); - } catch (e) { - return cb(e); - } - if (cookie === null) { - return putNext(null); // skip this cookie - } +var _interopRequireDefault = __nccwpck_require__(3286); - jar.store.putCookie(cookie, putNext); - } +__nccwpck_require__(6880); - putNext(); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -CookieJar.deserialize = function(strOrObj, store, cb) { - if (arguments.length !== 3) { - // store is optional - cb = store; - store = null; - } +var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); - var serialized; - if (typeof strOrObj === 'string') { - serialized = jsonParse(strOrObj); - if (serialized instanceof Error) { - return cb(serialized); - } - } else { - serialized = strOrObj; - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - var jar = new CookieJar(store, serialized.rejectPublicSuffixes); - jar._importCookies(serialized, function(err) { - if (err) { - return cb(err); - } - cb(null, jar); - }); -}; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var endHashtagMatch = (0, _regexSupplant["default"])(/^(?:#{hashSigns}|:\/\/)/, { + hashSigns: _hashSigns["default"] +}); +var _default = endHashtagMatch; +exports["default"] = _default; +module.exports = exports.default; -CookieJar.deserializeSync = function(strOrObj, store) { - var serialized = typeof strOrObj === 'string' ? - JSON.parse(strOrObj) : strOrObj; - var jar = new CookieJar(store, serialized.rejectPublicSuffixes); +/***/ }), - // catch this mistake early: - if (!jar.store.synchronous) { - throw new Error('CookieJar store is not synchronous; use async API instead.'); - } +/***/ 2240: +/***/ ((module, exports, __nccwpck_require__) => { - jar._importCookiesSync(serialized); - return jar; -}; -CookieJar.fromJSON = CookieJar.deserializeSync; +"use strict"; -CAN_BE_SYNC.push('clone'); -CookieJar.prototype.clone = function(newStore, cb) { - if (arguments.length === 1) { - cb = newStore; - newStore = null; - } - this.serialize(function(err,serialized) { - if (err) { - return cb(err); - } - CookieJar.deserialize(newStore, serialized, cb); - }); -}; +var _interopRequireDefault = __nccwpck_require__(3286); -// Use a closure to provide a true imperative API for synchronous stores. -function syncWrap(method) { - return function() { - if (!this.store.synchronous) { - throw new Error('CookieJar store is not synchronous; use async API instead.'); - } +__nccwpck_require__(6880); - var args = Array.prototype.slice.call(arguments); - var syncErr, syncResult; - args.push(function syncCb(err, result) { - syncErr = err; - syncResult = result; - }); - this[method].apply(this, args); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (syncErr) { - throw syncErr; - } - return syncResult; - }; -} +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); -// wrap all declared CAN_BE_SYNC methods in the sync wrapper -CAN_BE_SYNC.forEach(function(method) { - CookieJar.prototype[method+'Sync'] = syncWrap(method); -}); +var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); -exports.CookieJar = CookieJar; -exports.Cookie = Cookie; -exports.Store = Store; -exports.MemoryCookieStore = MemoryCookieStore; -exports.parseDate = parseDate; -exports.formatDate = formatDate; -exports.parse = parse; -exports.fromJSON = fromJSON; -exports.domainMatch = domainMatch; -exports.defaultPath = defaultPath; -exports.pathMatch = pathMatch; -exports.getPublicSuffix = pubsuffix.getPublicSuffix; -exports.cookieCompare = cookieCompare; -exports.permuteDomain = __webpack_require__(383).permuteDomain; -exports.permutePath = permutePath; -exports.canonicalDomain = canonicalDomain; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var endMentionMatch = (0, _regexSupplant["default"])(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/, { + atSigns: _atSigns["default"], + latinAccentChars: _latinAccentChars["default"] +}); +var _default = endMentionMatch; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 893 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 9871: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = _default; +})); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -__webpack_require__(549); +var _validDomain = _interopRequireDefault(__nccwpck_require__(4657)); -var _clone = _interopRequireDefault(__webpack_require__(582)); +var _validPortNumber = _interopRequireDefault(__nccwpck_require__(7493)); -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); +var _validUrlPath = _interopRequireDefault(__nccwpck_require__(2648)); -var _linkToText = _interopRequireDefault(__webpack_require__(583)); +var _validUrlPrecedingChars = _interopRequireDefault(__nccwpck_require__(2814)); -var _linkTextWithEntity = _interopRequireDefault(__webpack_require__(655)); +var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); -var _urlHasProtocol = _interopRequireDefault(__webpack_require__(654)); +var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var url = entity.url; - var displayUrl = url; - var linkText = (0, _htmlEscape["default"])(displayUrl); // If the caller passed a urlEntities object (provided by a Twitter API - // response with include_entities=true), we use that to render the display_url - // for each URL instead of it's underlying t.co URL. +var extractUrl = (0, _regexSupplant["default"])('(' + // $1 total match +'(#{validUrlPrecedingChars})' + // $2 Preceeding chracter +'(' + // $3 URL +'(https?:\\/\\/)?' + // $4 Protocol (optional) +'(#{validDomain})' + // $5 Domain(s) +'(?::(#{validPortNumber}))?' + // $6 Port number (optional) +'(\\/#{validUrlPath}*)?' + // $7 URL Path +'(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $8 Query String +')' + ')', { + validUrlPrecedingChars: _validUrlPrecedingChars["default"], + validDomain: _validDomain["default"], + validPortNumber: _validPortNumber["default"], + validUrlPath: _validUrlPath["default"], + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +}, 'gi'); +var _default = extractUrl; +exports["default"] = _default; +module.exports = exports.default; - var urlEntity = options.urlEntities && options.urlEntities[url] || entity; +/***/ }), - if (urlEntity.display_url) { - linkText = (0, _linkTextWithEntity["default"])(urlEntity, options); - } +/***/ 3466: +/***/ ((module, exports, __nccwpck_require__) => { - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); +"use strict"; - if (!url.match(_urlHasProtocol["default"])) { - url = "http://".concat(url); - } - attrs.href = url; +__nccwpck_require__(6880); - if (options.targetBlank) { - attrs.target = '_blank'; - } // set class only if urlClass is specified. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashSigns = /[##]/; +var _default = hashSigns; +exports["default"] = _default; +module.exports = exports.default; +/***/ }), - if (options.urlClass) { - attrs['class'] = options.urlClass; - } // set target only if urlTarget is specified. +/***/ 4420: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; - if (options.urlTarget) { - attrs.target = options.urlTarget; - } - if (!options.title && urlEntity.display_url) { - attrs.title = urlEntity.expanded_url; - } +var _interopRequireDefault = __nccwpck_require__(3286); - return (0, _linkToText["default"])(entity, linkText, attrs, options); -} +__nccwpck_require__(6880); -module.exports = exports.default; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -/***/ }), -/* 894 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); -"use strict"; +var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); +var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { - '$ref': __webpack_require__(327), - allOf: __webpack_require__(107), - anyOf: __webpack_require__(167), - '$comment': __webpack_require__(28), - const: __webpack_require__(520), - contains: __webpack_require__(154), - dependencies: __webpack_require__(369), - 'enum': __webpack_require__(281), - format: __webpack_require__(687), - 'if': __webpack_require__(479), - items: __webpack_require__(643), - maximum: __webpack_require__(961), - minimum: __webpack_require__(961), - maxItems: __webpack_require__(160), - minItems: __webpack_require__(160), - maxLength: __webpack_require__(772), - minLength: __webpack_require__(772), - maxProperties: __webpack_require__(560), - minProperties: __webpack_require__(560), - multipleOf: __webpack_require__(397), - not: __webpack_require__(673), - oneOf: __webpack_require__(653), - pattern: __webpack_require__(542), - properties: __webpack_require__(343), - propertyNames: __webpack_require__(706), - required: __webpack_require__(858), - uniqueItems: __webpack_require__(899), - validate: __webpack_require__(212) -}; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// A hashtag must contain at least one unicode letter or mark, as well as numbers, underscores, and select special characters. +var hashtagAlpha = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}))/, { + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + astralLetterAndMarks: _astralLetterAndMarks["default"] +}); +var _default = hashtagAlpha; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 895 */, -/* 896 */, -/* 897 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 2975: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; -__webpack_require__(604); +var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); + +var _astralNumerals = _interopRequireDefault(__nccwpck_require__(777)); + +var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); + +var _bmpNumerals = _interopRequireDefault(__nccwpck_require__(9376)); -__webpack_require__(549); +var _hashtagSpecialChars = _interopRequireDefault(__nccwpck_require__(2583)); -var _punycode = _interopRequireDefault(__webpack_require__(213)); +var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); -var _validAsciiDomain = _interopRequireDefault(__webpack_require__(745)); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var MAX_DOMAIN_LABEL_LENGTH = 63; -var PUNYCODE_ENCODED_DOMAIN_PREFIX = 'xn--'; // This is an extremely lightweight implementation of domain name validation according to RFC 3490 -// Our regexes handle most of the cases well enough -// See https://tools.ietf.org/html/rfc3490#section-4.1 for details +var hashtagAlphaNumeric = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}#{bmpNumerals}#{hashtagSpecialChars}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}|#{astralNumerals}))/, { + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + bmpNumerals: _bmpNumerals["default"], + hashtagSpecialChars: _hashtagSpecialChars["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + astralLetterAndMarks: _astralLetterAndMarks["default"], + astralNumerals: _astralNumerals["default"] +}); +var _default = hashtagAlphaNumeric; +exports["default"] = _default; +module.exports = exports.default; -var idna = { - toAscii: function toAscii(domain) { - if (domain.substring(0, 4) === PUNYCODE_ENCODED_DOMAIN_PREFIX && !domain.match(_validAsciiDomain["default"])) { - // Punycode encoded url cannot contain non ASCII characters - return; - } +/***/ }), - var labels = domain.split('.'); +/***/ 4386: +/***/ ((module, exports, __nccwpck_require__) => { - for (var i = 0; i < labels.length; i++) { - var label = labels[i]; +"use strict"; - var punycodeEncodedLabel = _punycode["default"].toASCII(label); - if (punycodeEncodedLabel.length < 1 || punycodeEncodedLabel.length > MAX_DOMAIN_LABEL_LENGTH) { - // DNS label has invalid length - return; - } - } +var _interopRequireDefault = __nccwpck_require__(3286); - return labels.join('.'); - } -}; -var _default = idna; -exports["default"] = _default; -module.exports = exports.default; +__nccwpck_require__(6880); -/***/ }), -/* 898 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -"use strict"; +var _codePoint = _interopRequireDefault(__nccwpck_require__(5594)); +var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); -Object.defineProperty(exports, '__esModule', { value: true }); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var request = __webpack_require__(638); -var universalUserAgent = __webpack_require__(796); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashtagBoundary = (0, _regexSupplant["default"])(/(?:^|\uFE0E|\uFE0F|$|(?!#{hashtagAlphaNumeric}|&)#{codePoint})/, { + codePoint: _codePoint["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"] +}); +var _default = hashtagBoundary; +exports["default"] = _default; +module.exports = exports.default; -const VERSION = "5.0.1"; +/***/ }), -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); -} +/***/ 2583: +/***/ ((module, exports, __nccwpck_require__) => { -class GraphqlResponseError extends Error { - constructor(request, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request; - this.headers = headers; - this.response = response; - this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. +"use strict"; - this.errors = response.errors; - this.data = response.data; // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ +__nccwpck_require__(6880); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashtagSpecialChars = /_\u200c\u200d\ua67e\u05be\u05f3\u05f4\uff5e\u301c\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\xb7/; +var _default = hashtagSpecialChars; +exports["default"] = _default; +module.exports = exports.default; -} +/***/ }), -const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; -const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } +/***/ 4440: +/***/ ((module, exports, __nccwpck_require__) => { - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); - } - } +"use strict"; - const parsedOptions = typeof query === "string" ? Object.assign({ - query - }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } +var _interopRequireDefault = __nccwpck_require__(3286); - result.variables[key] = parsedOptions[key]; - return result; - }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 +__nccwpck_require__(6880); - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } +var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); - return request(requestOptions).then(response => { - if (response.data.errors) { - const headers = {}; +var _astralNumerals = _interopRequireDefault(__nccwpck_require__(777)); - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); - throw new GraphqlResponseError(requestOptions, headers, response.data); - } +var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); - return response.data.data; - }); -} +var _bmpNumerals = _interopRequireDefault(__nccwpck_require__(9376)); -function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); +var _cashtag = _interopRequireDefault(__nccwpck_require__(1277)); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; +var _codePoint = _interopRequireDefault(__nccwpck_require__(5594)); - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint - }); -} +var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); -const graphql$1 = withDefaults(request.request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql" - }); -} +var _endHashtagMatch = _interopRequireDefault(__nccwpck_require__(1226)); -exports.GraphqlResponseError = GraphqlResponseError; -exports.graphql = graphql$1; -exports.withCustomRequest = withCustomRequest; -//# sourceMappingURL=index.js.map +var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); +var _extractUrl = _interopRequireDefault(__nccwpck_require__(9871)); -/***/ }), -/* 899 */ -/***/ (function(module) { +var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); -"use strict"; +var _hashtagAlpha = _interopRequireDefault(__nccwpck_require__(4420)); -module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; - var $itemType = it.schema.items && it.schema.items.type, - $typeIsArray = Array.isArray($itemType); - if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { - out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; - } else { - out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; - var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; - if ($typeIsArray) { - out += ' if (typeof item == \'string\') item = \'"\' + item; '; - } - out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; - } - out += ' } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} +var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); +var _hashtagBoundary = _interopRequireDefault(__nccwpck_require__(4386)); -/***/ }), -/* 900 */ -/***/ (function(module, exports, __webpack_require__) { +var _hashtagSpecialChars = _interopRequireDefault(__nccwpck_require__(2583)); -"use strict"; +var _invalidChars = _interopRequireDefault(__nccwpck_require__(8678)); +var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); -var _interopRequireDefault = __webpack_require__(764); +var _invalidDomainChars = _interopRequireDefault(__nccwpck_require__(9492)); -__webpack_require__(493); +var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__nccwpck_require__(4130)); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; +var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); -__webpack_require__(549); +var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); -var _atSigns = _interopRequireDefault(__webpack_require__(1)); +var _punct = _interopRequireDefault(__nccwpck_require__(2813)); -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); +var _rtlChars = _interopRequireDefault(__nccwpck_require__(6462)); -var _linkToText = _interopRequireDefault(__webpack_require__(583)); +var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, symbol, text, attributes, options) { - var taggedSymbol = options.symbolTag ? "<".concat(options.symbolTag, ">").concat(symbol, "") : symbol; - text = (0, _htmlEscape["default"])(text); - var taggedText = options.textWithSymbolTag ? "<".concat(options.textWithSymbolTag, ">").concat(text, "") : text; +var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); - if (options.usernameIncludeSymbol || !symbol.match(_atSigns["default"])) { - return (0, _linkToText["default"])(entity, taggedSymbol + taggedText, attributes, options); - } else { - return taggedSymbol + (0, _linkToText["default"])(entity, taggedText, attributes, options); - } -} +var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); -module.exports = exports.default; +var _urlHasProtocol = _interopRequireDefault(__nccwpck_require__(2025)); -/***/ }), -/* 901 */ -/***/ (function(module) { +var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); -module.exports = {"$id":"cache.json#","$schema":"http://json-schema.org/draft-06/schema#","properties":{"beforeRequest":{"oneOf":[{"type":"null"},{"$ref":"beforeRequest.json#"}]},"afterRequest":{"oneOf":[{"type":"null"},{"$ref":"afterRequest.json#"}]},"comment":{"type":"string"}}}; +var _validateUrlAuthority = _interopRequireDefault(__nccwpck_require__(9072)); -/***/ }), -/* 902 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +var _validateUrlDecOctet = _interopRequireDefault(__nccwpck_require__(3300)); -"use strict"; +var _validateUrlDomain = _interopRequireDefault(__nccwpck_require__(6746)); +var _validateUrlDomainSegment = _interopRequireDefault(__nccwpck_require__(7985)); -var qs = __webpack_require__(386) -var querystring = __webpack_require__(191) +var _validateUrlDomainTld = _interopRequireDefault(__nccwpck_require__(6679)); -function Querystring (request) { - this.request = request - this.lib = null - this.useQuerystring = null - this.parseOptions = null - this.stringifyOptions = null -} +var _validateUrlFragment = _interopRequireDefault(__nccwpck_require__(2769)); -Querystring.prototype.init = function (options) { - if (this.lib) { return } +var _validateUrlHost = _interopRequireDefault(__nccwpck_require__(9888)); - this.useQuerystring = options.useQuerystring - this.lib = (this.useQuerystring ? querystring : qs) +var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); - this.parseOptions = options.qsParseOptions || {} - this.stringifyOptions = options.qsStringifyOptions || {} -} +var _validateUrlIpv = _interopRequireDefault(__nccwpck_require__(1925)); -Querystring.prototype.stringify = function (obj) { - return (this.useQuerystring) - ? this.rfc3986(this.lib.stringify(obj, - this.stringifyOptions.sep || null, - this.stringifyOptions.eq || null, - this.stringifyOptions)) - : this.lib.stringify(obj, this.stringifyOptions) -} +var _validateUrlIpv2 = _interopRequireDefault(__nccwpck_require__(8642)); -Querystring.prototype.parse = function (str) { - return (this.useQuerystring) - ? this.lib.parse(str, - this.parseOptions.sep || null, - this.parseOptions.eq || null, - this.parseOptions) - : this.lib.parse(str, this.parseOptions) -} +var _validateUrlPath = _interopRequireDefault(__nccwpck_require__(1075)); -Querystring.prototype.rfc3986 = function (str) { - return str.replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} +var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); -Querystring.prototype.unescape = querystring.unescape +var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); -exports.Querystring = Querystring +var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); +var _validateUrlQuery = _interopRequireDefault(__nccwpck_require__(1697)); -/***/ }), -/* 903 */, -/* 904 */, -/* 905 */, -/* 906 */ -/***/ (function(module, exports, __webpack_require__) { +var _validateUrlScheme = _interopRequireDefault(__nccwpck_require__(6579)); -"use strict"; +var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); +var _validateUrlSubDomainSegment = _interopRequireDefault(__nccwpck_require__(2379)); -__webpack_require__(493); +var _validateUrlUnencoded = _interopRequireDefault(__nccwpck_require__(3907)); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashtagSpecialChars = /_\u200c\u200d\ua67e\u05be\u05f3\u05f4\uff5e\u301c\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\xb7/; -var _default = hashtagSpecialChars; -exports["default"] = _default; -module.exports = exports.default; +var _validateUrlUnicodeAuthority = _interopRequireDefault(__nccwpck_require__(977)); -/***/ }), -/* 907 */ -/***/ (function(module) { +var _validateUrlUnicodeDomain = _interopRequireDefault(__nccwpck_require__(6559)); -module.exports = {}; +var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__nccwpck_require__(2823)); +var _validateUrlUnicodeDomainTld = _interopRequireDefault(__nccwpck_require__(9578)); -/***/ }), -/* 908 */, -/* 909 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +var _validateUrlUnicodeHost = _interopRequireDefault(__nccwpck_require__(3946)); -// Copyright 2012 Joyent, Inc. All rights reserved. +var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__nccwpck_require__(4550)); -var assert = __webpack_require__(489); -var sshpk = __webpack_require__(650); -var util = __webpack_require__(669); +var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); -var HASH_ALGOS = { - 'sha1': true, - 'sha256': true, - 'sha512': true -}; +var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); -var PK_ALGOS = { - 'rsa': true, - 'dsa': true, - 'ecdsa': true -}; +var _validCashtag = _interopRequireDefault(__nccwpck_require__(8382)); -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); +var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); - this.message = message; - this.name = caller.name; -} -util.inherits(HttpSignatureError, Error); +var _validDomain = _interopRequireDefault(__nccwpck_require__(4657)); -function InvalidAlgorithmError(message) { - HttpSignatureError.call(this, message, InvalidAlgorithmError); -} -util.inherits(InvalidAlgorithmError, HttpSignatureError); +var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); -function validateAlgorithm(algorithm) { - var alg = algorithm.toLowerCase().split('-'); +var _validDomainName = _interopRequireDefault(__nccwpck_require__(8203)); - if (alg.length !== 2) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + - 'valid algorithm')); - } +var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); - if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + - 'are not supported')); - } +var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); - if (!HASH_ALGOS[alg[1]]) { - throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + - 'supported hash algorithm')); - } +var _validHashtag = _interopRequireDefault(__nccwpck_require__(6826)); - return (alg); -} +var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); -///--- API +var _validMentionPrecedingChars = _interopRequireDefault(__nccwpck_require__(8454)); -module.exports = { +var _validPortNumber = _interopRequireDefault(__nccwpck_require__(7493)); - HASH_ALGOS: HASH_ALGOS, - PK_ALGOS: PK_ALGOS, +var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); - HttpSignatureError: HttpSignatureError, - InvalidAlgorithmError: InvalidAlgorithmError, +var _validReply = _interopRequireDefault(__nccwpck_require__(2575)); - validateAlgorithm: validateAlgorithm, +var _validSubdomain = _interopRequireDefault(__nccwpck_require__(6285)); - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); +var _validTcoUrl = _interopRequireDefault(__nccwpck_require__(1527)); - var k = sshpk.parseKey(key, 'ssh'); - return (k.toString('pem')); - }, +var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); +var _validUrlPath = _interopRequireDefault(__nccwpck_require__(2648)); - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); +var _validUrlPathEndingChars = _interopRequireDefault(__nccwpck_require__(9913)); - var k = sshpk.parseKey(key, 'ssh'); - return (k.fingerprint('md5').toString('hex')); - }, +var _validUrlPrecedingChars = _interopRequireDefault(__nccwpck_require__(2814)); - /** - * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa) - * - * The reverse of the above function. - */ - pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) { - assert.equal('string', typeof (pem), 'typeof pem'); +var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); - var k = sshpk.parseKey(pem, 'pem'); - k.comment = comment; - return (k.toString('ssh')); - } +var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var _default = { + astralLetterAndMarks: _astralLetterAndMarks["default"], + astralNumerals: _astralNumerals["default"], + atSigns: _atSigns["default"], + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + bmpNumerals: _bmpNumerals["default"], + cashtag: _cashtag["default"], + codePoint: _codePoint["default"], + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + endHashtagMatch: _endHashtagMatch["default"], + endMentionMatch: _endMentionMatch["default"], + extractUrl: _extractUrl["default"], + hashSigns: _hashSigns["default"], + hashtagAlpha: _hashtagAlpha["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], + hashtagBoundary: _hashtagBoundary["default"], + hashtagSpecialChars: _hashtagSpecialChars["default"], + invalidChars: _invalidChars["default"], + invalidCharsGroup: _invalidCharsGroup["default"], + invalidDomainChars: _invalidDomainChars["default"], + invalidUrlWithoutProtocolPrecedingChars: _invalidUrlWithoutProtocolPrecedingChars["default"], + latinAccentChars: _latinAccentChars["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + punct: _punct["default"], + rtlChars: _rtlChars["default"], + spaces: _spaces["default"], + spacesGroup: _spacesGroup["default"], + urlHasHttps: _urlHasHttps["default"], + urlHasProtocol: _urlHasProtocol["default"], + validAsciiDomain: _validAsciiDomain["default"], + validateUrlAuthority: _validateUrlAuthority["default"], + validateUrlDecOctet: _validateUrlDecOctet["default"], + validateUrlDomain: _validateUrlDomain["default"], + validateUrlDomainSegment: _validateUrlDomainSegment["default"], + validateUrlDomainTld: _validateUrlDomainTld["default"], + validateUrlFragment: _validateUrlFragment["default"], + validateUrlHost: _validateUrlHost["default"], + validateUrlIp: _validateUrlIp["default"], + validateUrlIpv4: _validateUrlIpv["default"], + validateUrlIpv6: _validateUrlIpv2["default"], + validateUrlPath: _validateUrlPath["default"], + validateUrlPchar: _validateUrlPchar["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlPort: _validateUrlPort["default"], + validateUrlQuery: _validateUrlQuery["default"], + validateUrlScheme: _validateUrlScheme["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"], + validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], + validateUrlUnencoded: _validateUrlUnencoded["default"], + validateUrlUnicodeAuthority: _validateUrlUnicodeAuthority["default"], + validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"], + validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], + validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"], + validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], + validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlUserinfo: _validateUrlUserinfo["default"], + validCashtag: _validCashtag["default"], + validCCTLD: _validCCTLD["default"], + validDomain: _validDomain["default"], + validDomainChars: _validDomainChars["default"], + validDomainName: _validDomainName["default"], + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], + validGTLD: _validGTLD["default"], + validHashtag: _validHashtag["default"], + validMentionOrList: _validMentionOrList["default"], + validMentionPrecedingChars: _validMentionPrecedingChars["default"], + validPortNumber: _validPortNumber["default"], + validPunycode: _validPunycode["default"], + validReply: _validReply["default"], + validSubdomain: _validSubdomain["default"], + validTcoUrl: _validTcoUrl["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"], + validUrlPath: _validUrlPath["default"], + validUrlPathEndingChars: _validUrlPathEndingChars["default"], + validUrlPrecedingChars: _validUrlPrecedingChars["default"], + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] }; - +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 910 */, -/* 911 */, -/* 912 */, -/* 913 */, -/* 914 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 8678: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; -var _autoLink = _interopRequireDefault(__webpack_require__(606)); +var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); + +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidChars = (0, _regexSupplant["default"])(/[#{invalidCharsGroup}]/, { + invalidCharsGroup: _invalidCharsGroup["default"] +}); +var _default = invalidChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), + +/***/ 1960: +/***/ ((module, exports, __nccwpck_require__) => { -var _autoLinkCashtags = _interopRequireDefault(__webpack_require__(987)); +"use strict"; -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); -var _autoLinkHashtags = _interopRequireDefault(__webpack_require__(95)); +__nccwpck_require__(6880); -var _autoLinkUrlsCustom = _interopRequireDefault(__webpack_require__(974)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidCharsGroup = /\uFFFE\uFEFF\uFFFF/; +var _default = invalidCharsGroup; +exports["default"] = _default; +module.exports = exports.default; -var _autoLinkUsernamesOrLists = _interopRequireDefault(__webpack_require__(869)); +/***/ }), -var _autoLinkWithJSON = _interopRequireDefault(__webpack_require__(544)); +/***/ 9492: +/***/ ((module, exports, __nccwpck_require__) => { -var _configs = _interopRequireDefault(__webpack_require__(125)); +"use strict"; -var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(722)); -var _extractCashtags = _interopRequireDefault(__webpack_require__(112)); +var _interopRequireDefault = __nccwpck_require__(3286); -var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); +__nccwpck_require__(6880); -var _extractEntitiesWithIndices = _interopRequireDefault(__webpack_require__(458)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -var _extractHashtags = _interopRequireDefault(__webpack_require__(566)); +var _directionalMarkersGroup = _interopRequireDefault(__nccwpck_require__(6138)); -var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); +var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); -var _extractHtmlAttrsFromOptions = _interopRequireDefault(__webpack_require__(418)); +var _punct = _interopRequireDefault(__nccwpck_require__(2813)); -var _extractMentions = _interopRequireDefault(__webpack_require__(933)); +var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); +var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); -var _extractMentionsWithIndices = _interopRequireDefault(__webpack_require__(58)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidDomainChars = (0, _stringSupplant["default"])('#{punct}#{spacesGroup}#{invalidCharsGroup}#{directionalMarkersGroup}', { + punct: _punct["default"], + spacesGroup: _spacesGroup["default"], + invalidCharsGroup: _invalidCharsGroup["default"], + directionalMarkersGroup: _directionalMarkersGroup["default"] +}); +var _default = invalidDomainChars; +exports["default"] = _default; +module.exports = exports.default; -var _extractReplies = _interopRequireDefault(__webpack_require__(770)); +/***/ }), -var _extractUrls = _interopRequireDefault(__webpack_require__(608)); +/***/ 4130: +/***/ ((module, exports, __nccwpck_require__) => { -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); +"use strict"; -var _getTweetLength = _interopRequireDefault(__webpack_require__(467)); -var _getUnicodeTextLength = _interopRequireDefault(__webpack_require__(105)); +__nccwpck_require__(6880); -var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidUrlWithoutProtocolPrecedingChars = /[-_.\/]$/; +var _default = invalidUrlWithoutProtocolPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; -var _hitHighlight = _interopRequireDefault(__webpack_require__(830)); +/***/ }), -var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); +/***/ 1012: +/***/ ((module, exports, __nccwpck_require__) => { -var _isInvalidTweet = _interopRequireDefault(__webpack_require__(406)); +"use strict"; -var _isValidHashtag = _interopRequireDefault(__webpack_require__(248)); -var _isValidList = _interopRequireDefault(__webpack_require__(234)); +__nccwpck_require__(6880); -var _isValidTweetText = _interopRequireDefault(__webpack_require__(48)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var latinAccentChars = /\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0100-\u024F\u0253\u0254\u0256\u0257\u0259\u025B\u0263\u0268\u026F\u0272\u0289\u028B\u02BB\u0300-\u036F\u1E00-\u1EFF/; +var _default = latinAccentChars; +exports["default"] = _default; +module.exports = exports.default; -var _isValidUrl = _interopRequireDefault(__webpack_require__(33)); +/***/ }), -var _isValidUsername = _interopRequireDefault(__webpack_require__(939)); +/***/ 1575: +/***/ ((module, exports, __nccwpck_require__) => { -var _linkTextWithEntity = _interopRequireDefault(__webpack_require__(655)); +"use strict"; -var _linkToCashtag = _interopRequireDefault(__webpack_require__(833)); -var _linkToHashtag = _interopRequireDefault(__webpack_require__(89)); +__nccwpck_require__(6880); -var _linkToMentionAndList = _interopRequireDefault(__webpack_require__(660)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var nonBmpCodePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/gm; +var _default = nonBmpCodePairs; +exports["default"] = _default; +module.exports = exports.default; -var _linkToText = _interopRequireDefault(__webpack_require__(583)); +/***/ }), -var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); +/***/ 2813: +/***/ ((module, exports, __nccwpck_require__) => { -var _linkToUrl = _interopRequireDefault(__webpack_require__(893)); +"use strict"; -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); -var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__webpack_require__(787)); +__nccwpck_require__(6880); -var _index = _interopRequireDefault(__webpack_require__(229)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/; +var _default = punct; +exports["default"] = _default; +module.exports = exports.default; -var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); +/***/ }), -var _parseTweet = _interopRequireDefault(__webpack_require__(166)); +/***/ 6462: +/***/ ((module, exports, __nccwpck_require__) => { -var _splitTags = _interopRequireDefault(__webpack_require__(459)); +"use strict"; -var _standardizeIndices = _interopRequireDefault(__webpack_require__(60)); -var _tagAttrs = _interopRequireDefault(__webpack_require__(181)); +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var _default = { - autoLink: _autoLink["default"], - autoLinkCashtags: _autoLinkCashtags["default"], - autoLinkEntities: _autoLinkEntities["default"], - autoLinkHashtags: _autoLinkHashtags["default"], - autoLinkUrlsCustom: _autoLinkUrlsCustom["default"], - autoLinkUsernamesOrLists: _autoLinkUsernamesOrLists["default"], - autoLinkWithJSON: _autoLinkWithJSON["default"], - configs: _configs["default"], - convertUnicodeIndices: _convertUnicodeIndices["default"], - extractCashtags: _extractCashtags["default"], - extractCashtagsWithIndices: _extractCashtagsWithIndices["default"], - extractEntitiesWithIndices: _extractEntitiesWithIndices["default"], - extractHashtags: _extractHashtags["default"], - extractHashtagsWithIndices: _extractHashtagsWithIndices["default"], - extractHtmlAttrsFromOptions: _extractHtmlAttrsFromOptions["default"], - extractMentions: _extractMentions["default"], - extractMentionsOrListsWithIndices: _extractMentionsOrListsWithIndices["default"], - extractMentionsWithIndices: _extractMentionsWithIndices["default"], - extractReplies: _extractReplies["default"], - extractUrls: _extractUrls["default"], - extractUrlsWithIndices: _extractUrlsWithIndices["default"], - getTweetLength: _getTweetLength["default"], - getUnicodeTextLength: _getUnicodeTextLength["default"], - hasInvalidCharacters: _hasInvalidCharacters["default"], - hitHighlight: _hitHighlight["default"], - htmlEscape: _htmlEscape["default"], - isInvalidTweet: _isInvalidTweet["default"], - isValidHashtag: _isValidHashtag["default"], - isValidList: _isValidList["default"], - isValidTweetText: _isValidTweetText["default"], - isValidUrl: _isValidUrl["default"], - isValidUsername: _isValidUsername["default"], - linkTextWithEntity: _linkTextWithEntity["default"], - linkToCashtag: _linkToCashtag["default"], - linkToHashtag: _linkToHashtag["default"], - linkToMentionAndList: _linkToMentionAndList["default"], - linkToText: _linkToText["default"], - linkToTextWithSymbol: _linkToTextWithSymbol["default"], - linkToUrl: _linkToUrl["default"], - modifyIndicesFromUTF16ToUnicode: _modifyIndicesFromUTF16ToUnicode["default"], - modifyIndicesFromUnicodeToUTF16: _modifyIndicesFromUnicodeToUTF["default"], - regexen: _index["default"], - removeOverlappingEntities: _removeOverlappingEntities["default"], - parseTweet: _parseTweet["default"], - splitTags: _splitTags["default"], - standardizeIndices: _standardizeIndices["default"], - tagAttrs: _tagAttrs["default"] -}; +var rtlChars = /[\u0600-\u06FF]|[\u0750-\u077F]|[\u0590-\u05FF]|[\uFE70-\uFEFF]/gm; +var _default = rtlChars; exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 915 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 1985: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -__webpack_require__(493); +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = _default; +})); +exports["default"] = void 0; -__webpack_require__(210); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + +var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(entities) { - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var prev = entities[0]; - - for (var i = 1; i < entities.length; i++) { - if (prev.indices[1] > entities[i].indices[0]) { - entities.splice(i, 1); - i--; - } else { - prev = entities[i]; - } - } -} +var _default = (0, _regexSupplant["default"])(/[#{spacesGroup}]/, { + spacesGroup: _spacesGroup["default"] +}); +exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 916 */, -/* 917 */, -/* 918 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + +/***/ 9388: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -/** - * Module dependencies - */ +__nccwpck_require__(6880); -var url = __webpack_require__(835); -var Streamparser = __webpack_require__(71); -var request = __webpack_require__(878); -var extend = __webpack_require__(203); - -// Package version -var VERSION = __webpack_require__(540).version; - -function Twitter(options) { - if (!(this instanceof Twitter)) { return new Twitter(options) } - - this.VERSION = VERSION; - - // Merge the default options with the client submitted options - this.options = extend({ - consumer_key: null, - consumer_secret: null, - access_token_key: null, - access_token_secret: null, - bearer_token: null, - rest_base: 'https://api.twitter.com/1.1', - stream_base: 'https://stream.twitter.com/1.1', - user_stream_base: 'https://userstream.twitter.com/1.1', - site_stream_base: 'https://sitestream.twitter.com/1.1', - media_base: 'https://upload.twitter.com/1.1', - request_options: { - headers: { - Accept: '*/*', - Connection: 'close', - 'User-Agent': 'node-twitter/' + VERSION - } - } - }, options); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var spacesGroup = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; +var _default = spacesGroup; +exports["default"] = _default; +module.exports = exports.default; - // Default to user authentication - var authentication_options = { - oauth: { - consumer_key: this.options.consumer_key, - consumer_secret: this.options.consumer_secret, - token: this.options.access_token_key, - token_secret: this.options.access_token_secret - } - }; +/***/ }), - // Check to see if we are going to use User Authentication or Application Authetication - if (this.options.bearer_token) { - authentication_options = { - headers: { - Authorization: 'Bearer ' + this.options.bearer_token - } - }; - } +/***/ 4926: +/***/ ((module, exports, __nccwpck_require__) => { - // Configure default request options - this.request = request.defaults( - extend( - this.options.request_options, - authentication_options - ) - ); +"use strict"; - // Check if Promise present - this.allow_promise = (typeof Promise === 'function'); -} -Twitter.prototype.__buildEndpoint = function(path, base) { - var bases = { - 'rest': this.options.rest_base, - 'stream': this.options.stream_base, - 'user_stream': this.options.user_stream_base, - 'site_stream': this.options.site_stream_base, - 'media': this.options.media_base - }; - var endpoint = (bases.hasOwnProperty(base)) ? bases[base] : bases.rest; - // if full url is specified we use that - var isFullUrl = (url.parse(path).protocol !== null); - if (isFullUrl) { - endpoint = path; - } - else { - // If the path begins with media or /media - if (path.match(/^(\/)?media/)) { - endpoint = bases.media; - } - endpoint += (path.charAt(0) === '/') ? path : '/' + path; - } +__nccwpck_require__(6880); - // Remove trailing slash - endpoint = endpoint.replace(/\/$/, ''); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var urlHasHttps = /^https:\/\//i; +var _default = urlHasHttps; +exports["default"] = _default; +module.exports = exports.default; - if(!isFullUrl) { - // Add json extension if not provided in call... only if a full url is not specified - endpoint += (path.split('.').pop() !== 'json') ? '.json' : ''; - } +/***/ }), - return endpoint; -}; +/***/ 2025: +/***/ ((module, exports, __nccwpck_require__) => { -Twitter.prototype.__request = function(method, path, params, callback) { - var base = 'rest', promise = false; +"use strict"; - // Set the callback if no params are passed - if (typeof params === 'function') { - callback = params; - params = {}; - } - // Return promise if no callback is passed and promises available - else if (callback === undefined && this.allow_promise) { - promise = true; - } - // Set API base - if (typeof params.base !== 'undefined') { - base = params.base; - delete params.base; - } +__nccwpck_require__(6880); - // Build the options to pass to our custom request object - var options = { - method: method.toLowerCase(), // Request method - get || post - url: this.__buildEndpoint(path, base) // Generate url - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var urlHasProtocol = /^https?:\/\//i; +var _default = urlHasProtocol; +exports["default"] = _default; +module.exports = exports.default; - // Pass url parameters if get - if (method === 'get') { - options.qs = params; - } +/***/ }), - // Pass form data if post - if (method === 'post') { - var formKey = 'form'; +/***/ 3598: +/***/ ((module, exports, __nccwpck_require__) => { - if (typeof params.media !== 'undefined') { - formKey = 'formData'; - } - options[formKey] = params; - } +"use strict"; - // Promisified version - if (promise) { - var _this = this; - return new Promise(function(resolve, reject) { - _this.request(options, function(error, response, data) { - // request error - if (error) { - return reject(error); - } - // JSON parse error or empty strings - try { - // An empty string is a valid response - if (data === '') { - data = {}; - } - else { - data = JSON.parse(data); - } - } - catch(parseError) { - return reject(new Error('JSON parseError with HTTP Status: ' + response.statusCode + ' ' + response.statusMessage)); - } +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - // response object errors - // This should return an error object not an array of errors - if (data.errors !== undefined) { - return reject(data.errors); - } +var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); - // status code errors - if(response.statusCode < 200 || response.statusCode > 299) { - return reject(new Error('HTTP Error: ' + response.statusCode + ' ' + response.statusMessage)); - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - // no errors - resolve(data); - }); - }); - } +var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); - // Callback version - this.request(options, function(error, response, data) { - // request error - if (error) { - return callback(error, data, response); - } +var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); - // JSON parse error or empty strings - try { - // An empty string is a valid response - if (data === '') { - data = {}; - } - else { - data = JSON.parse(data); - } - } - catch(parseError) { - return callback( - new Error('JSON parseError with HTTP Status: ' + response.statusCode + ' ' + response.statusMessage), - data, - response - ); - } +var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validAsciiDomain = (0, _regexSupplant["default"])(/(?:(?:[\-a-z0-9#{latinAccentChars}]+)\.)+(?:#{validGTLD}|#{validCCTLD}|#{validPunycode})/gi, { + latinAccentChars: _latinAccentChars["default"], + validGTLD: _validGTLD["default"], + validCCTLD: _validCCTLD["default"], + validPunycode: _validPunycode["default"] +}); +var _default = validAsciiDomain; +exports["default"] = _default; +module.exports = exports.default; - // response object errors - // This should return an error object not an array of errors - if (data.errors !== undefined) { - return callback(data.errors, data, response); - } +/***/ }), - // status code errors - if(response.statusCode < 200 || response.statusCode > 299) { - return callback( - new Error('HTTP Error: ' + response.statusCode + ' ' + response.statusMessage), - data, - response - ); - } - // no errors - callback(null, data, response); - }); +/***/ 7647: +/***/ ((module, exports, __nccwpck_require__) => { -}; +"use strict"; -/** - * GET - */ -Twitter.prototype.get = function(url, params, callback) { - return this.__request('get', url, params, callback); -}; -/** - * POST - */ -Twitter.prototype.post = function(url, params, callback) { - return this.__request('post', url, params, callback); -}; +var _interopRequireDefault = __nccwpck_require__(3286); -/** - * STREAM - */ -Twitter.prototype.stream = function(method, params, callback) { - if (typeof params === 'function') { - callback = params; - params = {}; - } +__nccwpck_require__(6880); - var base = 'stream'; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (method === 'user' || method === 'site') { - base = method + '_' + base; - } +__nccwpck_require__(7662); - var url = this.__buildEndpoint(method, base); - var request = this.request({url: url, qs: params}); - var stream = new Streamparser(); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - stream.destroy = function() { - // FIXME: should we emit end/close on explicit destroy? - if ( typeof request.abort === 'function' ) { - request.abort(); // node v0.4.0 - } - else { - request.socket.destroy(); - } - }; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validCCTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ລາວ|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|' + 'ભારત|ਭਾਰਤ|ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|موريتانيا|مليسيا|مصر|قطر|فلسطين|عمان|' + 'عراق|سورية|سودان|تونس|بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|البحرين|الاردن|հայ|қаз|' + 'укр|срб|рф|мон|мкд|ею|бел|бг|ευ|ελ|zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|' + 'ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|' + 'sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|re|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|' + 'nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|' + 'me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|' + 'is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|' + 'gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|' + 'cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|' + 'ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' + ')(?=[^0-9a-zA-Z@+-]|$))')); +var _default = validCCTLD; +exports["default"] = _default; +module.exports = exports.default; - request.on('response', function(response) { - if(response.statusCode !== 200) { - stream.emit('error', new Error('Status Code: ' + response.statusCode)); - } - else { - stream.emit('response', response); - } +/***/ }), - response.on('data', function(chunk) { - stream.receive(chunk); - }); +/***/ 8382: +/***/ ((module, exports, __nccwpck_require__) => { - response.on('error', function(error) { - stream.emit('error', error); - }); +"use strict"; - response.on('end', function() { - stream.emit('end', response); - }); - }); - request.on('error', function(error) { - stream.emit('error', error); - }); - request.end(); +var _interopRequireDefault = __nccwpck_require__(3286); - if (typeof callback === 'function') { - callback(stream); - } - else { - return stream; - } -}; +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -module.exports = Twitter; +var _cashtag = _interopRequireDefault(__nccwpck_require__(1277)); +var _punct = _interopRequireDefault(__nccwpck_require__(2813)); -/***/ }), -/* 919 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -"use strict"; +var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validCashtag = (0, _regexSupplant["default"])('(^|#{spaces})(\\$)(#{cashtag})(?=$|\\s|[#{punct}])', { + cashtag: _cashtag["default"], + spaces: _spaces["default"], + punct: _punct["default"] +}, 'gi'); +var _default = validCashtag; +exports["default"] = _default; +module.exports = exports.default; -var Type = __webpack_require__(755); +/***/ }), -var _hasOwnProperty = Object.prototype.hasOwnProperty; -var _toString = Object.prototype.toString; +/***/ 4657: +/***/ ((module, exports, __nccwpck_require__) => { -function resolveYamlOmap(data) { - if (data === null) return true; +"use strict"; - var objectKeys = [], index, length, pair, pairKey, pairHasKey, - object = data; - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; +var _interopRequireDefault = __nccwpck_require__(3286); - if (_toString.call(pair) !== '[object Object]') return false; +__nccwpck_require__(6880); - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (!pairHasKey) return false; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; - } +var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); - return true; -} +var _validDomainName = _interopRequireDefault(__nccwpck_require__(8203)); -function constructYamlOmap(data) { - return data !== null ? data : []; -} +var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); -module.exports = new Type('tag:yaml.org,2002:omap', { - kind: 'sequence', - resolve: resolveYamlOmap, - construct: constructYamlOmap -}); +var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); +var _validSubdomain = _interopRequireDefault(__nccwpck_require__(6285)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validDomain = (0, _regexSupplant["default"])(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/, { + validDomainName: _validDomainName["default"], + validSubdomain: _validSubdomain["default"], + validGTLD: _validGTLD["default"], + validCCTLD: _validCCTLD["default"], + validPunycode: _validPunycode["default"] +}); +var _default = validDomain; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 920 */, -/* 921 */ -/***/ (function(module) { + +/***/ 2089: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); -var Cache = module.exports = function Cache() { - this._cache = {}; -}; +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -Cache.prototype.put = function Cache_put(key, value) { - this._cache[key] = value; -}; +var _invalidDomainChars = _interopRequireDefault(__nccwpck_require__(9492)); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -Cache.prototype.get = function Cache_get(key) { - return this._cache[key]; -}; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validDomainChars = (0, _regexSupplant["default"])(/[^#{invalidDomainChars}]/, { + invalidDomainChars: _invalidDomainChars["default"] +}); +var _default = validDomainChars; +exports["default"] = _default; +module.exports = exports.default; +/***/ }), -Cache.prototype.del = function Cache_del(key) { - delete this._cache[key]; -}; +/***/ 8203: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -Cache.prototype.clear = function Cache_clear() { - this._cache = {}; -}; +var _interopRequireDefault = __nccwpck_require__(3286); -/***/ }), -/* 922 */, -/* 923 */, -/* 924 */, -/* 925 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +__nccwpck_require__(6880); -var document = __webpack_require__(300).document; -module.exports = document && document.documentElement; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validDomainName = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/, { + validDomainChars: _validDomainChars["default"] +}); +var _default = validDomainName; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 926 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { -/* - * lib/jsprim.js: utilities for primitive JavaScript types - */ +/***/ 7869: +/***/ ((module, exports, __nccwpck_require__) => { -var mod_assert = __webpack_require__(489); -var mod_util = __webpack_require__(669); +"use strict"; -var mod_extsprintf = __webpack_require__(697); -var mod_verror = __webpack_require__(640); -var mod_jsonschema = __webpack_require__(353); -/* - * Public interface - */ -exports.deepCopy = deepCopy; -exports.deepEqual = deepEqual; -exports.isEmpty = isEmpty; -exports.hasKey = hasKey; -exports.forEachKey = forEachKey; -exports.pluck = pluck; -exports.flattenObject = flattenObject; -exports.flattenIter = flattenIter; -exports.validateJsonObject = validateJsonObjectJS; -exports.validateJsonObjectJS = validateJsonObjectJS; -exports.randElt = randElt; -exports.extraProperties = extraProperties; -exports.mergeObjects = mergeObjects; - -exports.startsWith = startsWith; -exports.endsWith = endsWith; - -exports.parseInteger = parseInteger; - -exports.iso8601 = iso8601; -exports.rfc1123 = rfc1123; -exports.parseDateTime = parseDateTime; - -exports.hrtimediff = hrtimeDiff; -exports.hrtimeDiff = hrtimeDiff; -exports.hrtimeAccum = hrtimeAccum; -exports.hrtimeAdd = hrtimeAdd; -exports.hrtimeNanosec = hrtimeNanosec; -exports.hrtimeMicrosec = hrtimeMicrosec; -exports.hrtimeMillisec = hrtimeMillisec; - - -/* - * Deep copy an acyclic *basic* Javascript object. This only handles basic - * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects - * containing these. This does *not* handle instances of other classes. - */ -function deepCopy(obj) -{ - var ret, key; - var marker = '__deepCopy'; +var _interopRequireDefault = __nccwpck_require__(3286); - if (obj && obj[marker]) - throw (new Error('attempted deep copy of cyclic object')); +__nccwpck_require__(6880); - if (obj && obj.constructor == Object) { - ret = {}; - obj[marker] = true; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - for (key in obj) { - if (key == marker) - continue; +__nccwpck_require__(7662); - ret[key] = deepCopy(obj[key]); - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - delete (obj[marker]); - return (ret); - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validGTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|' + '政府|政务|招聘|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|' + '中文网|中信|世界|ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|' + 'كاثوليك|عرب|شبكة|بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|' + 'католик|дети|zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|' + 'yandex|yamaxun|yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|' + 'works|work|woodside|wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|' + 'weir|weibo|wedding|wed|website|weber|webcam|weatherchannel|weather|watches|watch|warman|' + 'wanggou|wang|walter|walmart|wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|' + 'vlaanderen|vivo|viva|vistaprint|vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|' + 'viajes|vet|versicherung|vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|' + 'vana|vacations|ups|uol|uno|university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|' + 'trust|travelersinsurance|travelers|travelchannel|travel|training|trading|trade|toys|toyota|' + 'town|tours|total|toshiba|toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|' + 'tiffany|tienda|tickets|tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|' + 'technology|tech|team|tdk|tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|' + 'systems|symantec|sydney|swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|' + 'sucks|style|study|studio|stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|' + 'statebank|starhub|star|staples|stada|srt|srl|spreadbetting|spot|sport|spiegel|space|soy|sony|' + 'song|solutions|solar|sohu|software|softbank|social|soccer|sncf|smile|smart|sling|skype|sky|' + 'skin|ski|site|singles|sina|silk|shriram|showtime|show|shouji|shopping|shop|shoes|shiksha|shia|' + 'shell|shaw|sharp|shangrila|sfr|sexy|sex|sew|seven|ses|services|sener|select|seek|security|' + 'secure|seat|search|scot|scor|scjohnson|science|schwarz|schule|school|scholarships|schmidt|' + 'schaeffler|scb|sca|sbs|sbi|saxo|save|sas|sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|' + 'samsclub|salon|sale|sakura|safety|safe|saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|' + 'rodeo|rocks|rocher|rmit|rip|rio|ril|rightathome|ricoh|richardli|rich|rexroth|reviews|review|' + 'restaurant|rest|republican|report|repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|' + 'redumbrella|redstone|red|recipes|realty|realtor|realestate|read|raid|radio|racing|qvc|quest|' + 'quebec|qpon|pwc|pub|prudential|pru|protection|property|properties|promo|progressive|prof|' + 'productions|prod|pro|prime|press|praxi|pramerica|post|porn|politie|poker|pohl|pnc|plus|' + 'plumbing|playstation|play|place|pizza|pioneer|pink|ping|pin|pid|pictures|pictet|pics|piaget|' + 'physio|photos|photography|photo|phone|philips|phd|pharmacy|pfizer|pet|pccw|pay|passagens|' + 'party|parts|partners|pars|paris|panerai|panasonic|pamperedchef|page|ovh|ott|otsuka|osaka|' + 'origins|orientexpress|organic|org|orange|oracle|open|ooo|onyourside|online|onl|ong|one|omega|' + 'ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|obi|nyc|ntt|nrw|nra|nowtv|nowruz|' + 'now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|nike|nico|nhk|ngo|nfl|nexus|' + 'nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|net|nec|nba|navy|natura|' + 'nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|msd|movistar|movie|mov|' + 'motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|monash|mom|moi|moe|moda|' + 'mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|miami|metlife|merckmsd|' + 'meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|mcd|mba|mattel|' + 'maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|makeup|maison|' + 'maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|lotte|' + 'london|lol|loft|locus|locker|loans|loan|llp|llc|lixil|living|live|lipsy|link|linde|lincoln|' + 'limo|limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|' + 'legal|lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|' + 'lancome|lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|' + 'kpmg|kosher|komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|' + 'kerrylogistics|kerryhotels|kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|' + 'jmp|jll|jlc|jio|jewelry|jetzt|jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|' + 'ismaili|iselect|irish|ipiranga|investments|intuit|international|intel|int|insure|insurance|' + 'institute|ink|ing|info|infiniti|industries|inc|immobilien|immo|imdb|imamat|ikano|iinet|ifm|' + 'ieee|icu|ice|icbc|ibm|hyundai|hyatt|hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|' + 'hosting|host|hospital|horse|honeywell|honda|homesense|homes|homegoods|homedepot|holiday|' + 'holdings|hockey|hkt|hiv|hitachi|hisamitsu|hiphop|hgtv|hermes|here|helsinki|help|healthcare|' + 'health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|hair|guru|guitars|guide|guge|gucci|guardian|' + 'group|grocery|gripe|green|gratis|graphics|grainger|gov|got|gop|google|goog|goodyear|goodhands|' + 'goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|globo|global|gle|glass|glade|giving|gives|' + 'gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|gay|garden|gap|games|game|gallup|gallo|' + 'gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|ftr|frontier|frontdoor|frogans|' + 'frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|football|foodnetwork|food|foo|fly|' + 'flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|fishing|fish|firmdale|firestone|fire|' + 'financial|finance|final|film|fido|fidelity|fiat|ferrero|ferrari|feedback|fedex|fast|fashion|' + 'farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|extraspace|express|exposed|expert|' + 'exchange|everbank|events|eus|eurovision|etisalat|esurance|estate|esq|erni|ericsson|equipment|' + 'epson|epost|enterprises|engineering|engineer|energy|emerck|email|education|edu|edeka|eco|eat|' + 'earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|download|dot|doosan|domains|' + 'doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|direct|digital|diet|' + 'diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|delivery|degree|' + 'deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|cymru|cuisinella|' + 'csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|cpa|courses|coupons|coupon|' + 'country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|construction|' + 'condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|college|coffee|' + 'codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|cityeats|city|' + 'citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|chintai|cheap|' + 'chat|chase|charity|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' + 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' + 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|' + 'cab|bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' + 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|' + 'bofa|boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|' + 'blackfriday|black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|' + 'beer|beauty|beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|' + 'barclays|barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|' + 'avianca|autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|' + 'asda|arte|art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|' + 'android|analytics|amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|' + 'ally|allstate|allfinanz|alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|' + 'agakhan|africa|afl|afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|' + 'accountant|accenture|academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|' + 'onion' + ')(?=[^0-9a-zA-Z@+-]|$))')); +var _default = validGTLD; +exports["default"] = _default; +module.exports = exports.default; - if (obj && obj.constructor == Array) { - ret = []; - obj[marker] = true; +/***/ }), - for (key = 0; key < obj.length; key++) - ret.push(deepCopy(obj[key])); +/***/ 462: +/***/ ((module, exports, __nccwpck_require__) => { - delete (obj[marker]); - return (ret); - } +"use strict"; - /* - * It must be a primitive type -- just return it. - */ - return (obj); -} -function deepEqual(obj1, obj2) -{ - if (typeof (obj1) != typeof (obj2)) - return (false); +var _interopRequireDefault = __nccwpck_require__(3286); - if (obj1 === null || obj2 === null || typeof (obj1) != 'object') - return (obj1 === obj2); +__nccwpck_require__(6880); - if (obj1.constructor != obj2.constructor) - return (false); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - var k; - for (k in obj1) { - if (!obj2.hasOwnProperty(k)) - return (false); +var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); - if (!deepEqual(obj1[k], obj2[k])) - return (false); - } +var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); - for (k in obj2) { - if (!obj1.hasOwnProperty(k)) - return (false); - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - return (true); -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validGeneralUrlPathChars = (0, _regexSupplant["default"])(/[a-z#{cyrillicLettersAndMarks}0-9!\*';:=\+,\.\$\/%#\[\]\-\u2013_~@\|&#{latinAccentChars}]/i, { + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + latinAccentChars: _latinAccentChars["default"] +}); +var _default = validGeneralUrlPathChars; +exports["default"] = _default; +module.exports = exports.default; -function isEmpty(obj) -{ - var key; - for (key in obj) - return (false); - return (true); -} +/***/ }), -function hasKey(obj, key) -{ - mod_assert.equal(typeof (key), 'string'); - return (Object.prototype.hasOwnProperty.call(obj, key)); -} +/***/ 6826: +/***/ ((module, exports, __nccwpck_require__) => { -function forEachKey(obj, callback) -{ - for (var key in obj) { - if (hasKey(obj, key)) { - callback(key, obj[key]); - } - } -} +"use strict"; -function pluck(obj, key) -{ - mod_assert.equal(typeof (key), 'string'); - return (pluckv(obj, key)); -} -function pluckv(obj, key) -{ - if (obj === null || typeof (obj) !== 'object') - return (undefined); +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (obj.hasOwnProperty(key)) - return (obj[key]); +var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); - var i = key.indexOf('.'); - if (i == -1) - return (undefined); +var _hashtagAlpha = _interopRequireDefault(__nccwpck_require__(4420)); - var key1 = key.substr(0, i); - if (!obj.hasOwnProperty(key1)) - return (undefined); +var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); - return (pluckv(obj[key1], key.substr(i + 1))); -} +var _hashtagBoundary = _interopRequireDefault(__nccwpck_require__(4386)); -/* - * Invoke callback(row) for each entry in the array that would be returned by - * flattenObject(data, depth). This is just like flattenObject(data, - * depth).forEach(callback), except that the intermediate array is never - * created. - */ -function flattenIter(data, depth, callback) -{ - doFlattenIter(data, depth, [], callback); -} +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -function doFlattenIter(data, depth, accum, callback) -{ - var each; - var key; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validHashtag = (0, _regexSupplant["default"])(/(#{hashtagBoundary})(#{hashSigns})(?!\uFE0F|\u20E3)(#{hashtagAlphaNumeric}*#{hashtagAlpha}#{hashtagAlphaNumeric}*)/gi, { + hashtagBoundary: _hashtagBoundary["default"], + hashSigns: _hashSigns["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], + hashtagAlpha: _hashtagAlpha["default"] +}); +var _default = validHashtag; +exports["default"] = _default; +module.exports = exports.default; - if (depth === 0) { - each = accum.slice(0); - each.push(data); - callback(each); - return; - } +/***/ }), - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); +/***/ 6882: +/***/ ((module, exports, __nccwpck_require__) => { - for (key in data) { - each = accum.slice(0); - each.push(key); - doFlattenIter(data[key], depth - 1, each, callback); - } -} +"use strict"; -function flattenObject(data, depth) -{ - if (depth === 0) - return ([ data ]); - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); +var _interopRequireDefault = __nccwpck_require__(3286); - var rv = []; - var key; +__nccwpck_require__(6880); - for (key in data) { - flattenObject(data[key], depth - 1).forEach(function (p) { - rv.push([ key ].concat(p)); - }); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - return (rv); -} +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); -function startsWith(str, prefix) -{ - return (str.substr(0, prefix.length) == prefix); -} +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -function endsWith(str, suffix) -{ - return (str.substr( - str.length - suffix.length, suffix.length) == suffix); -} +var _validMentionPrecedingChars = _interopRequireDefault(__nccwpck_require__(8454)); -function iso8601(d) -{ - if (typeof (d) == 'number') - d = new Date(d); - mod_assert.ok(d.constructor === Date); - return (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ', - d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), - d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), - d.getUTCMilliseconds())); -} - -var RFC1123_MONTHS = [ - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -var RFC1123_DAYS = [ - 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - -function rfc1123(date) { - return (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', - RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(), - RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(), - date.getUTCHours(), date.getUTCMinutes(), - date.getUTCSeconds())); -} - -/* - * Parses a date expressed as a string, as either a number of milliseconds since - * the epoch or any string format that Date accepts, giving preference to the - * former where these two sets overlap (e.g., small numbers). - */ -function parseDateTime(str) +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validMentionOrList = (0, _regexSupplant["default"])('(#{validMentionPrecedingChars})' + // $1: Preceding character +'(#{atSigns})' + // $2: At mark +'([a-zA-Z0-9_]{1,20})' + // $3: Screen name +'(/[a-zA-Z][a-zA-Z0-9_-]{0,24})?', // $4: List (optional) { - /* - * This is irritatingly implicit, but significantly more concise than - * alternatives. The "+str" will convert a string containing only a - * number directly to a Number, or NaN for other strings. Thus, if the - * conversion succeeds, we use it (this is the milliseconds-since-epoch - * case). Otherwise, we pass the string directly to the Date - * constructor to parse. - */ - var numeric = +str; - if (!isNaN(numeric)) { - return (new Date(numeric)); - } else { - return (new Date(str)); - } -} - + validMentionPrecedingChars: _validMentionPrecedingChars["default"], + atSigns: _atSigns["default"] +}, 'g'); +var _default = validMentionOrList; +exports["default"] = _default; +module.exports = exports.default; -/* - * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode - * the ES6 definitions here, while allowing for them to someday be higher. - */ -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; -var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; +/***/ }), +/***/ 8454: +/***/ ((module, exports, __nccwpck_require__) => { -/* - * Default options for parseInteger(). - */ -var PI_DEFAULTS = { - base: 10, - allowSign: true, - allowPrefix: false, - allowTrailing: false, - allowImprecise: false, - trimWhitespace: false, - leadingZeroIsOctal: false -}; +"use strict"; -var CP_0 = 0x30; -var CP_9 = 0x39; -var CP_A = 0x41; -var CP_B = 0x42; -var CP_O = 0x4f; -var CP_T = 0x54; -var CP_X = 0x58; -var CP_Z = 0x5a; +__nccwpck_require__(6880); -var CP_a = 0x61; -var CP_b = 0x62; -var CP_o = 0x6f; -var CP_t = 0x74; -var CP_x = 0x78; -var CP_z = 0x7a; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validMentionPrecedingChars = /(?:^|[^a-zA-Z0-9_!#$%&*@@]|(?:^|[^a-zA-Z0-9_+~.-])(?:rt|RT|rT|Rt):?)/; +var _default = validMentionPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; -var PI_CONV_DEC = 0x30; -var PI_CONV_UC = 0x37; -var PI_CONV_LC = 0x57; +/***/ }), +/***/ 7493: +/***/ ((module, exports, __nccwpck_require__) => { -/* - * A stricter version of parseInt() that provides options for changing what - * is an acceptable string (for example, disallowing trailing characters). - */ -function parseInteger(str, uopts) -{ - mod_assert.string(str, 'str'); - mod_assert.optionalObject(uopts, 'options'); - - var baseOverride = false; - var options = PI_DEFAULTS; - - if (uopts) { - baseOverride = hasKey(uopts, 'base'); - options = mergeObjects(options, uopts); - mod_assert.number(options.base, 'options.base'); - mod_assert.ok(options.base >= 2, 'options.base >= 2'); - mod_assert.ok(options.base <= 36, 'options.base <= 36'); - mod_assert.bool(options.allowSign, 'options.allowSign'); - mod_assert.bool(options.allowPrefix, 'options.allowPrefix'); - mod_assert.bool(options.allowTrailing, - 'options.allowTrailing'); - mod_assert.bool(options.allowImprecise, - 'options.allowImprecise'); - mod_assert.bool(options.trimWhitespace, - 'options.trimWhitespace'); - mod_assert.bool(options.leadingZeroIsOctal, - 'options.leadingZeroIsOctal'); - - if (options.leadingZeroIsOctal) { - mod_assert.ok(!baseOverride, - '"base" and "leadingZeroIsOctal" are ' + - 'mutually exclusive'); - } - } +"use strict"; - var c; - var pbase = -1; - var base = options.base; - var start; - var mult = 1; - var value = 0; - var idx = 0; - var len = str.length; - - /* Trim any whitespace on the left side. */ - if (options.trimWhitespace) { - while (idx < len && isSpace(str.charCodeAt(idx))) { - ++idx; - } - } - /* Check the number for a leading sign. */ - if (options.allowSign) { - if (str[idx] === '-') { - idx += 1; - mult = -1; - } else if (str[idx] === '+') { - idx += 1; - } - } +__nccwpck_require__(6880); - /* Parse the base-indicating prefix if there is one. */ - if (str[idx] === '0') { - if (options.allowPrefix) { - pbase = prefixToBase(str.charCodeAt(idx + 1)); - if (pbase !== -1 && (!baseOverride || pbase === base)) { - base = pbase; - idx += 2; - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validPortNumber = /[0-9]+/; +var _default = validPortNumber; +exports["default"] = _default; +module.exports = exports.default; - if (pbase === -1 && options.leadingZeroIsOctal) { - base = 8; - } - } +/***/ }), - /* Parse the actual digits. */ - for (start = idx; idx < len; ++idx) { - c = translateDigit(str.charCodeAt(idx)); - if (c !== -1 && c < base) { - value *= base; - value += c; - } else { - break; - } - } +/***/ 1064: +/***/ ((module, exports, __nccwpck_require__) => { - /* If we didn't parse any digits, we have an invalid number. */ - if (start === idx) { - return (new Error('invalid number: ' + JSON.stringify(str))); - } +"use strict"; - /* Trim any whitespace on the right side. */ - if (options.trimWhitespace) { - while (idx < len && isSpace(str.charCodeAt(idx))) { - ++idx; - } - } - /* Check for trailing characters. */ - if (idx < len && !options.allowTrailing) { - return (new Error('trailing characters after number: ' + - JSON.stringify(str.slice(idx)))); - } +__nccwpck_require__(6880); - /* If our value is 0, we return now, to avoid returning -0. */ - if (value === 0) { - return (0); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validPunycode = /(?:xn--[\-0-9a-z]+)/; +var _default = validPunycode; +exports["default"] = _default; +module.exports = exports.default; - /* Calculate our final value. */ - var result = value * mult; +/***/ }), - /* - * If the string represents a value that cannot be precisely represented - * by JavaScript, then we want to check that: - * - * - We never increased the value past MAX_SAFE_INTEGER - * - We don't make the result negative and below MIN_SAFE_INTEGER - * - * Because we only ever increment the value during parsing, there's no - * chance of moving past MAX_SAFE_INTEGER and then dropping below it - * again, losing precision in the process. This means that we only need - * to do our checks here, at the end. - */ - if (!options.allowImprecise && - (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) { - return (new Error('number is outside of the supported range: ' + - JSON.stringify(str.slice(start, idx)))); - } +/***/ 2575: +/***/ ((module, exports, __nccwpck_require__) => { - return (result); -} +"use strict"; -/* - * Interpret a character code as a base-36 digit. - */ -function translateDigit(d) -{ - if (d >= CP_0 && d <= CP_9) { - /* '0' to '9' -> 0 to 9 */ - return (d - PI_CONV_DEC); - } else if (d >= CP_A && d <= CP_Z) { - /* 'A' - 'Z' -> 10 to 35 */ - return (d - PI_CONV_UC); - } else if (d >= CP_a && d <= CP_z) { - /* 'a' - 'z' -> 10 to 35 */ - return (d - PI_CONV_LC); - } else { - /* Invalid character code */ - return (-1); - } -} +var _interopRequireDefault = __nccwpck_require__(3286); +__nccwpck_require__(6880); -/* - * Test if a value matches the ECMAScript definition of trimmable whitespace. - */ -function isSpace(c) -{ - return (c === 0x20) || - (c >= 0x0009 && c <= 0x000d) || - (c === 0x00a0) || - (c === 0x1680) || - (c === 0x180e) || - (c >= 0x2000 && c <= 0x200a) || - (c === 0x2028) || - (c === 0x2029) || - (c === 0x202f) || - (c === 0x205f) || - (c === 0x3000) || - (c === 0xfeff); -} - - -/* - * Determine which base a character indicates (e.g., 'x' indicates hex). - */ -function prefixToBase(c) -{ - if (c === CP_b || c === CP_B) { - /* 0b/0B (binary) */ - return (2); - } else if (c === CP_o || c === CP_O) { - /* 0o/0O (octal) */ - return (8); - } else if (c === CP_t || c === CP_T) { - /* 0t/0T (decimal) */ - return (10); - } else if (c === CP_x || c === CP_X) { - /* 0x/0X (hexadecimal) */ - return (16); - } else { - /* Not a meaningful character */ - return (-1); - } -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); -function validateJsonObjectJS(schema, input) -{ - var report = mod_jsonschema.validate(input, schema); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - if (report.errors.length === 0) - return (null); +var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); - /* Currently, we only do anything useful with the first error. */ - var error = report.errors[0]; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validReply = (0, _regexSupplant["default"])(/^(?:#{spaces})*#{atSigns}([a-zA-Z0-9_]{1,20})/, { + atSigns: _atSigns["default"], + spaces: _spaces["default"] +}); +var _default = validReply; +exports["default"] = _default; +module.exports = exports.default; - /* The failed property is given by a URI with an irrelevant prefix. */ - var propname = error['property']; - var reason = error['message'].toLowerCase(); - var i, j; +/***/ }), - /* - * There's at least one case where the property error message is - * confusing at best. We work around this here. - */ - if ((i = reason.indexOf('the property ')) != -1 && - (j = reason.indexOf(' is not defined in the schema and the ' + - 'schema does not allow additional properties')) != -1) { - i += 'the property '.length; - if (propname === '') - propname = reason.substr(i, j - i); - else - propname = propname + '.' + reason.substr(i, j - i); - - reason = 'unsupported property'; - } +/***/ 6285: +/***/ ((module, exports, __nccwpck_require__) => { - var rv = new mod_verror.VError('property "%s": %s', propname, reason); - rv.jsv_details = error; - return (rv); -} +"use strict"; -function randElt(arr) -{ - mod_assert.ok(Array.isArray(arr) && arr.length > 0, - 'randElt argument must be a non-empty array'); - return (arr[Math.floor(Math.random() * arr.length)]); -} +var _interopRequireDefault = __nccwpck_require__(3286); -function assertHrtime(a) -{ - mod_assert.ok(a[0] >= 0 && a[1] >= 0, - 'negative numbers not allowed in hrtimes'); - mod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow'); -} - -/* - * Compute the time elapsed between hrtime readings A and B, where A is later - * than B. hrtime readings come from Node's process.hrtime(). There is no - * defined way to represent negative deltas, so it's illegal to diff B from A - * where the time denoted by B is later than the time denoted by A. If this - * becomes valuable, we can define a representation and extend the - * implementation to support it. - */ -function hrtimeDiff(a, b) -{ - assertHrtime(a); - assertHrtime(b); - mod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]), - 'negative differences not allowed'); +__nccwpck_require__(6880); - var rv = [ a[0] - b[0], 0 ]; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (a[1] >= b[1]) { - rv[1] = a[1] - b[1]; - } else { - rv[0]--; - rv[1] = 1e9 - (b[1] - a[1]); - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - return (rv); -} +var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of nanoseconds. - */ -function hrtimeNanosec(a) -{ - assertHrtime(a); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validSubdomain = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/, { + validDomainChars: _validDomainChars["default"] +}); +var _default = validSubdomain; +exports["default"] = _default; +module.exports = exports.default; - return (Math.floor(a[0] * 1e9 + a[1])); -} +/***/ }), -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of microseconds. - */ -function hrtimeMicrosec(a) -{ - assertHrtime(a); +/***/ 1527: +/***/ ((module, exports, __nccwpck_require__) => { - return (Math.floor(a[0] * 1e6 + a[1] / 1e3)); -} +"use strict"; -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of milliseconds. - */ -function hrtimeMillisec(a) -{ - assertHrtime(a); - return (Math.floor(a[0] * 1e3 + a[1] / 1e6)); -} +var _interopRequireDefault = __nccwpck_require__(3286); -/* - * Add two hrtime readings A and B, overwriting A with the result of the - * addition. This function is useful for accumulating several hrtime intervals - * into a counter. Returns A. - */ -function hrtimeAccum(a, b) -{ - assertHrtime(a); - assertHrtime(b); +__nccwpck_require__(6880); - /* - * Accumulate the nanosecond component. - */ - a[1] += b[1]; - if (a[1] >= 1e9) { - /* - * The nanosecond component overflowed, so carry to the seconds - * field. - */ - a[0]++; - a[1] -= 1e9; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - /* - * Accumulate the seconds component. - */ - a[0] += b[0]; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - return (a); -} +var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); -/* - * Add two hrtime readings A and B, returning the result as a new hrtime array. - * Does not modify either input argument. - */ -function hrtimeAdd(a, b) -{ - assertHrtime(a); +var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); - var rv = [ a[0], a[1] ]; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validTcoUrl = (0, _regexSupplant["default"])(/^https?:\/\/t\.co\/([a-z0-9]+)(?:\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?/, { + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +}, 'i'); +var _default = validTcoUrl; +exports["default"] = _default; +module.exports = exports.default; - return (hrtimeAccum(rv, b)); -} +/***/ }), +/***/ 109: +/***/ ((module, exports, __nccwpck_require__) => { -/* - * Check an object for unexpected properties. Accepts the object to check, and - * an array of allowed property names (strings). Returns an array of key names - * that were found on the object, but did not appear in the list of allowed - * properties. If no properties were found, the returned array will be of - * zero length. - */ -function extraProperties(obj, allowed) -{ - mod_assert.ok(typeof (obj) === 'object' && obj !== null, - 'obj argument must be a non-null object'); - mod_assert.ok(Array.isArray(allowed), - 'allowed argument must be an array of strings'); - for (var i = 0; i < allowed.length; i++) { - mod_assert.ok(typeof (allowed[i]) === 'string', - 'allowed argument must be an array of strings'); - } +"use strict"; - return (Object.keys(obj).filter(function (key) { - return (allowed.indexOf(key) === -1); - })); -} -/* - * Given three sets of properties "provided" (may be undefined), "overrides" - * (required), and "defaults" (may be undefined), construct an object containing - * the union of these sets with "overrides" overriding "provided", and - * "provided" overriding "defaults". None of the input objects are modified. - */ -function mergeObjects(provided, overrides, defaults) -{ - var rv, k; +var _interopRequireDefault = __nccwpck_require__(3286); - rv = {}; - if (defaults) { - for (k in defaults) - rv[k] = defaults[k]; - } +__nccwpck_require__(6880); - if (provided) { - for (k in provided) - rv[k] = provided[k]; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (overrides) { - for (k in overrides) - rv[k] = overrides[k]; - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - return (rv); -} +var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Allow URL paths to contain up to two nested levels of balanced parens +// 1. Used in Wikipedia URLs like /Primer_(film) +// 2. Used in IIS sessions like /S(dfd346)/ +// 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/ +var validUrlBalancedParens = (0, _regexSupplant["default"])('\\(' + '(?:' + '#{validGeneralUrlPathChars}+' + '|' + // allow one nested level of balanced parentheses +'(?:' + '#{validGeneralUrlPathChars}*' + '\\(' + '#{validGeneralUrlPathChars}+' + '\\)' + '#{validGeneralUrlPathChars}*' + ')' + ')' + '\\)', { + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"] +}, 'i'); +var _default = validUrlBalancedParens; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 927 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// Copyright 2015 Joyent, Inc. +/***/ 2648: +/***/ ((module, exports, __nccwpck_require__) => { -var assert = __webpack_require__(489); -var crypto = __webpack_require__(417); -var sshpk = __webpack_require__(650); -var utils = __webpack_require__(909); +"use strict"; -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var HttpSignatureError = utils.HttpSignatureError; -var validateAlgorithm = utils.validateAlgorithm; -///--- Exported API +var _interopRequireDefault = __nccwpck_require__(3286); -module.exports = { - /** - * Verify RSA/DSA signature against public key. You are expected to pass in - * an object that was returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} pubkey RSA/DSA private key PEM. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - * @throws {InvalidAlgorithmError} - */ - verifySignature: function verifySignature(parsedSignature, pubkey) { - assert.object(parsedSignature, 'parsedSignature'); - if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey)) - pubkey = sshpk.parseKey(pubkey); - assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key'); - - var alg = validateAlgorithm(parsedSignature.algorithm); - if (alg[0] === 'hmac' || alg[0] !== pubkey.type) - return (false); - - var v = pubkey.createVerify(alg[1]); - v.update(parsedSignature.signingString); - return (v.verify(parsedSignature.params.signature, 'base64')); - }, +__nccwpck_require__(6880); - /** - * Verify HMAC against shared secret. You are expected to pass in an object - * that was returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} secret HMAC shared secret. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - * @throws {InvalidAlgorithmError} - */ - verifyHMAC: function verifyHMAC(parsedSignature, secret) { - assert.object(parsedSignature, 'parsedHMAC'); - assert.string(secret, 'secret'); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - var alg = validateAlgorithm(parsedSignature.algorithm); - if (alg[0] !== 'hmac') - return (false); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - var hashAlg = alg[1].toUpperCase(); +var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); - var hmac = crypto.createHmac(hashAlg, secret); - hmac.update(parsedSignature.signingString); +var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); - /* - * Now double-hash to avoid leaking timing information - there's - * no easy constant-time compare in JS, so we use this approach - * instead. See for more info: - * https://www.isecpartners.com/blog/2011/february/double-hmac- - * verification.aspx - */ - var h1 = crypto.createHmac(hashAlg, secret); - h1.update(hmac.digest()); - h1 = h1.digest(); - var h2 = crypto.createHmac(hashAlg, secret); - h2.update(new Buffer(parsedSignature.params.signature, 'base64')); - h2 = h2.digest(); - - /* Node 0.8 returns strings from .digest(). */ - if (typeof (h1) === 'string') - return (h1 === h2); - /* And node 0.10 lacks the .equals() method on Buffers. */ - if (Buffer.isBuffer(h1) && !h1.equals) - return (h1.toString('binary') === h2.toString('binary')); - - return (h1.equals(h2)); - } -}; +var _validUrlPathEndingChars = _interopRequireDefault(__nccwpck_require__(9913)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ +var validUrlPath = (0, _regexSupplant["default"])('(?:' + '(?:' + '#{validGeneralUrlPathChars}*' + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + '#{validUrlPathEndingChars}' + ')|(?:@#{validGeneralUrlPathChars}+/)' + ')', { + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"], + validUrlPathEndingChars: _validUrlPathEndingChars["default"] +}, 'i'); +var _default = validUrlPath; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 928 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -var CombinedStream = __webpack_require__(2); -var util = __webpack_require__(669); -var path = __webpack_require__(622); -var http = __webpack_require__(605); -var https = __webpack_require__(211); -var parseUrl = __webpack_require__(835).parse; -var fs = __webpack_require__(747); -var mime = __webpack_require__(233); -var asynckit = __webpack_require__(334); -var populate = __webpack_require__(201); - -// Public API -module.exports = FormData; - -// make it a Stream -util.inherits(FormData, CombinedStream); - -/** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. - * - * @constructor - * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream - */ -function FormData(options) { - if (!(this instanceof FormData)) { - return new FormData(); - } +/***/ 9913: +/***/ ((module, exports, __nccwpck_require__) => { - this._overheadLength = 0; - this._valueLength = 0; - this._valuesToMeasure = []; +"use strict"; - CombinedStream.call(this); - options = options || {}; - for (var option in options) { - this[option] = options[option]; - } -} +var _interopRequireDefault = __nccwpck_require__(3286); -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; +__nccwpck_require__(6880); -FormData.prototype.append = function(field, value, options) { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - options = options || {}; +var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } +var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); - var append = CombinedStream.prototype.append.bind(this); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } +var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Valid end-of-path chracters (so /foo. does not gobble the period). +// 1. Allow =&# for empty URL parameters and other URL-join artifacts +var validUrlPathEndingChars = (0, _regexSupplant["default"])(/[\+\-a-z#{cyrillicLettersAndMarks}0-9=_#\/#{latinAccentChars}]|(?:#{validUrlBalancedParens})/i, { + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + latinAccentChars: _latinAccentChars["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"] +}); +var _default = validUrlPathEndingChars; +exports["default"] = _default; +module.exports = exports.default; - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); +/***/ }), - append(header); - append(value); - append(footer); +/***/ 2814: +/***/ ((module, exports, __nccwpck_require__) => { - // pass along options.knownLength - this._trackLength(header, value, options); -}; +"use strict"; -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } +var _interopRequireDefault = __nccwpck_require__(3286); - this._valueLength += valueLength; +__nccwpck_require__(6880); - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } +var _directionalMarkersGroup = _interopRequireDefault(__nccwpck_require__(6138)); - // no need to bother with the length - if (!options.knownLength) { - this._valuesToMeasure.push(value); - } -}; +var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); -FormData.prototype._lengthRetriever = function(value, callback) { +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - if (value.hasOwnProperty('fd')) { +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validUrlPrecedingChars = (0, _regexSupplant["default"])(/(?:[^A-Za-z0-9@@$###{invalidCharsGroup}]|[#{directionalMarkersGroup}]|^)/, { + invalidCharsGroup: _invalidCharsGroup["default"], + directionalMarkersGroup: _directionalMarkersGroup["default"] +}); +var _default = validUrlPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - callback(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { +/***/ }), - var fileSize; +/***/ 3567: +/***/ ((module, exports, __nccwpck_require__) => { - if (err) { - callback(err); - return; - } +"use strict"; - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - callback(null, fileSize); - }); - } - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - callback(null, +value.headers['content-length']); +__nccwpck_require__(6880); - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - callback(null, +response.headers['content-length']); - }); - value.resume(); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validUrlQueryChars = /[a-z0-9!?\*'@\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i; +var _default = validUrlQueryChars; +exports["default"] = _default; +module.exports = exports.default; - // something else - } else { - callback('Unknown stream'); - } -}; +/***/ }), -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (typeof options.header == 'string') { - return options.header; - } +/***/ 7242: +/***/ ((module, exports, __nccwpck_require__) => { - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); +"use strict"; - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - // allow custom headers. - if (typeof options.header == 'object') { - populate(headers, options.header); - } +__nccwpck_require__(6880); - var header; - for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validUrlQueryEndingChars = /[a-z0-9\-_&=#\/]/i; +var _default = validUrlQueryEndingChars; +exports["default"] = _default; +module.exports = exports.default; - // skip nullish headers. - if (header == null) { - continue; - } +/***/ }), - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } +/***/ 9072: +/***/ ((module, exports, __nccwpck_require__) => { - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; - } - } +"use strict"; - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; -FormData.prototype._getContentDisposition = function(value, options) { +var _interopRequireDefault = __nccwpck_require__(3286); - var filename - , contentDisposition - ; +__nccwpck_require__(6880); - if (typeof options.filepath === 'string') { - // custom filepath for relative paths - filename = path.normalize(options.filepath).replace(/\\/g, '/'); - } else if (options.filename || value.name || value.path) { - // custom filename take precedence - // formidable and the browser add a name property - // fs- and request- streams have path property - filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - // or try http response - filename = path.basename(value.client._httpMessage.path); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (filename) { - contentDisposition = 'filename="' + filename + '"'; - } +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - return contentDisposition; -}; +var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); -FormData.prototype._getContentType = function(value, options) { +var _validateUrlHost = _interopRequireDefault(__nccwpck_require__(9888)); - // use custom content-type above all - var contentType = options.contentType; +var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); - // or try `name` from formidable, browser - if (!contentType && value.name) { - contentType = mime.lookup(value.name); - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlAuthority = (0, _regexSupplant["default"])( // $1 userinfo +'(?:(#{validateUrlUserinfo})@)?' + // $2 host +'(#{validateUrlHost})' + // $3 port +'(?::(#{validateUrlPort}))?', { + validateUrlUserinfo: _validateUrlUserinfo["default"], + validateUrlHost: _validateUrlHost["default"], + validateUrlPort: _validateUrlPort["default"] +}, 'i'); +var _default = validateUrlAuthority; +exports["default"] = _default; +module.exports = exports.default; - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } +/***/ }), - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } +/***/ 3300: +/***/ ((module, exports, __nccwpck_require__) => { - // or guess it from the filepath or filename - if (!contentType && (options.filepath || options.filename)) { - contentType = mime.lookup(options.filepath || options.filename); - } +"use strict"; - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData.DEFAULT_CONTENT_TYPE; - } - return contentType; -}; +__nccwpck_require__(6880); -FormData.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData.LINE_BREAK; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDecOctet = /(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9]{2})|(?:2[0-4][0-9])|(?:25[0-5]))/i; +var _default = validateUrlDecOctet; +exports["default"] = _default; +module.exports = exports.default; - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } +/***/ }), - next(footer); - }.bind(this); -}; +/***/ 6746: +/***/ ((module, exports, __nccwpck_require__) => { -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; +"use strict"; -FormData.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } +var _interopRequireDefault = __nccwpck_require__(3286); - return formHeaders; -}; +__nccwpck_require__(6880); -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - return this._boundary; -}; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } +var _validateUrlDomainSegment = _interopRequireDefault(__nccwpck_require__(7985)); - this._boundary = boundary; -}; +var _validateUrlDomainTld = _interopRequireDefault(__nccwpck_require__(6679)); -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; +var _validateUrlSubDomainSegment = _interopRequireDefault(__nccwpck_require__(2379)); - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlSubDomainSegment}\.)*(?:#{validateUrlDomainSegment}\.)#{validateUrlDomainTld})/i, { + validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], + validateUrlDomainSegment: _validateUrlDomainSegment["default"], + validateUrlDomainTld: _validateUrlDomainTld["default"] +}); +var _default = validateUrlDomain; +exports["default"] = _default; +module.exports = exports.default; - // https://github.com/form-data/form-data/issues/40 - if (!this.hasKnownLength()) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } +/***/ }), - return knownLength; -}; +/***/ 7985: +/***/ ((module, exports, __nccwpck_require__) => { -// Public API to check if length of added values is known -// https://github.com/form-data/form-data/issues/196 -// https://github.com/form-data/form-data/issues/262 -FormData.prototype.hasKnownLength = function() { - var hasKnownLength = true; +"use strict"; - if (this._valuesToMeasure.length) { - hasKnownLength = false; - } - return hasKnownLength; -}; +__nccwpck_require__(6880); -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomainSegment = /(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)/i; +var _default = validateUrlDomainSegment; +exports["default"] = _default; +module.exports = exports.default; - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } +/***/ }), - if (!this._valuesToMeasure.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } +/***/ 6679: +/***/ ((module, exports, __nccwpck_require__) => { - asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { - if (err) { - cb(err); - return; - } +"use strict"; - values.forEach(function(length) { - knownLength += length; - }); - cb(null, knownLength); - }); -}; +__nccwpck_require__(6880); -FormData.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname, - protocol: params.protocol - }, defaults); - - // use custom params - } else { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomainTld = /(?:[a-z](?:[a-z0-9\-]*[a-z0-9])?)/i; +var _default = validateUrlDomainTld; +exports["default"] = _default; +module.exports = exports.default; - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } +/***/ }), - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); +/***/ 2769: +/***/ ((module, exports, __nccwpck_require__) => { - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } +"use strict"; - // get content length and fire away - this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - // add content length - request.setHeader('Content-Length', length); +var _interopRequireDefault = __nccwpck_require__(3286); - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); +__nccwpck_require__(6880); - return request; -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -FormData.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -FormData.prototype.toString = function () { - return '[object FormData]'; -}; +var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlFragment = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { + validateUrlPchar: _validateUrlPchar["default"] +}); +var _default = validateUrlFragment; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 929 */, -/* 930 */, -/* 931 */, -/* 932 */, -/* 933 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 9888: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = _default; +})); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var _extractMentionsWithIndices = _interopRequireDefault(__webpack_require__(58)); +var _validateUrlDomain = _interopRequireDefault(__nccwpck_require__(6746)); + +var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var screenNamesOnly = [], - screenNamesWithIndices = (0, _extractMentionsWithIndices["default"])(text); - - for (var i = 0; i < screenNamesWithIndices.length; i++) { - var screenName = screenNamesWithIndices[i].screenName; - screenNamesOnly.push(screenName); - } - - return screenNamesOnly; -} - +var validateUrlHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlDomain}' + ')', { + validateUrlIp: _validateUrlIp["default"], + validateUrlDomain: _validateUrlDomain["default"] +}, 'i'); +var _default = validateUrlHost; +exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 934 */, -/* 935 */, -/* 936 */, -/* 937 */, -/* 938 */, -/* 939 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 371: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = _default; +})); +exports["default"] = void 0; -var _extractMentions = _interopRequireDefault(__webpack_require__(933)); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + +var _validateUrlIpv = _interopRequireDefault(__nccwpck_require__(1925)); + +var _validateUrlIpv2 = _interopRequireDefault(__nccwpck_require__(8642)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(username) { - if (!username) { - return false; - } - - var extracted = (0, _extractMentions["default"])(username); // Should extract the username minus the @ sign, hence the .slice(1) - - return extracted.length === 1 && extracted[0] === username.slice(1); -} - +// Punting on IPvFuture for now +var validateUrlIp = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIpv4}|' + '#{validateUrlIpv6}' + ')', { + validateUrlIpv4: _validateUrlIpv["default"], + validateUrlIpv6: _validateUrlIpv2["default"] +}, 'i'); +var _default = validateUrlIp; +exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 940 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. -module.exports = SSHBuffer; +/***/ 1925: +/***/ ((module, exports, __nccwpck_require__) => { -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; - -function SSHBuffer(opts) { - assert.object(opts, 'options'); - if (opts.buffer !== undefined) - assert.buffer(opts.buffer, 'options.buffer'); - - this._size = opts.buffer ? opts.buffer.length : 1024; - this._buffer = opts.buffer || Buffer.alloc(this._size); - this._offset = 0; -} - -SSHBuffer.prototype.toBuffer = function () { - return (this._buffer.slice(0, this._offset)); -}; - -SSHBuffer.prototype.atEnd = function () { - return (this._offset >= this._buffer.length); -}; +"use strict"; -SSHBuffer.prototype.remainder = function () { - return (this._buffer.slice(this._offset)); -}; -SSHBuffer.prototype.skip = function (n) { - this._offset += n; -}; +var _interopRequireDefault = __nccwpck_require__(3286); -SSHBuffer.prototype.expand = function () { - this._size *= 2; - var buf = Buffer.alloc(this._size); - this._buffer.copy(buf, 0); - this._buffer = buf; -}; +__nccwpck_require__(6880); -SSHBuffer.prototype.readPart = function () { - return ({data: this.readBuffer()}); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -SSHBuffer.prototype.readBuffer = function () { - var len = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - assert.ok(this._offset + len <= this._buffer.length, - 'length out of bounds at +0x' + this._offset.toString(16) + - ' (data truncated?)'); - var buf = this._buffer.slice(this._offset, this._offset + len); - this._offset += len; - return (buf); -}; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -SSHBuffer.prototype.readString = function () { - return (this.readBuffer().toString()); -}; +var _validateUrlDecOctet = _interopRequireDefault(__nccwpck_require__(3300)); -SSHBuffer.prototype.readCString = function () { - var offset = this._offset; - while (offset < this._buffer.length && - this._buffer[offset] !== 0x00) - offset++; - assert.ok(offset < this._buffer.length, 'c string does not terminate'); - var str = this._buffer.slice(this._offset, offset).toString(); - this._offset = offset + 1; - return (str); -}; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlIpv4 = (0, _regexSupplant["default"])(/(?:#{validateUrlDecOctet}(?:\.#{validateUrlDecOctet}){3})/i, { + validateUrlDecOctet: _validateUrlDecOctet["default"] +}); +var _default = validateUrlIpv4; +exports["default"] = _default; +module.exports = exports.default; -SSHBuffer.prototype.readInt = function () { - var v = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - return (v); -}; +/***/ }), -SSHBuffer.prototype.readInt64 = function () { - assert.ok(this._offset + 8 < this._buffer.length, - 'buffer not long enough to read Int64'); - var v = this._buffer.slice(this._offset, this._offset + 8); - this._offset += 8; - return (v); -}; +/***/ 8642: +/***/ ((module, exports, __nccwpck_require__) => { -SSHBuffer.prototype.readChar = function () { - var v = this._buffer[this._offset++]; - return (v); -}; +"use strict"; -SSHBuffer.prototype.writeBuffer = function (buf) { - while (this._offset + 4 + buf.length > this._size) - this.expand(); - this._buffer.writeUInt32BE(buf.length, this._offset); - this._offset += 4; - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; -SSHBuffer.prototype.writeString = function (str) { - this.writeBuffer(Buffer.from(str, 'utf8')); -}; +__nccwpck_require__(6880); -SSHBuffer.prototype.writeCString = function (str) { - while (this._offset + 1 + str.length > this._size) - this.expand(); - this._buffer.write(str, this._offset); - this._offset += str.length; - this._buffer[this._offset++] = 0; -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Punting on real IPv6 validation for now +var validateUrlIpv6 = /(?:\[[a-f0-9:\.]+\])/i; +var _default = validateUrlIpv6; +exports["default"] = _default; +module.exports = exports.default; -SSHBuffer.prototype.writeInt = function (v) { - while (this._offset + 4 > this._size) - this.expand(); - this._buffer.writeUInt32BE(v, this._offset); - this._offset += 4; -}; +/***/ }), -SSHBuffer.prototype.writeInt64 = function (v) { - assert.buffer(v, 'value'); - if (v.length > 8) { - var lead = v.slice(0, v.length - 8); - for (var i = 0; i < lead.length; ++i) { - assert.strictEqual(lead[i], 0, - 'must fit in 64 bits of precision'); - } - v = v.slice(v.length - 8, v.length); - } - while (this._offset + 8 > this._size) - this.expand(); - v.copy(this._buffer, this._offset); - this._offset += 8; -}; +/***/ 1075: +/***/ ((module, exports, __nccwpck_require__) => { -SSHBuffer.prototype.writeChar = function (v) { - while (this._offset + 1 > this._size) - this.expand(); - this._buffer[this._offset++] = v; -}; +"use strict"; -SSHBuffer.prototype.writePart = function (p) { - this.writeBuffer(p.data); -}; -SSHBuffer.prototype.write = function (buf) { - while (this._offset + buf.length > this._size) - this.expand(); - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; +var _interopRequireDefault = __nccwpck_require__(3286); +__nccwpck_require__(6880); -/***/ }), -/* 941 */, -/* 942 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -/*! - * Copyright 2010 LearnBoost - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); -/** - * Module dependencies. - */ +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPath = (0, _regexSupplant["default"])(/(\/#{validateUrlPchar}*)*/i, { + validateUrlPchar: _validateUrlPchar["default"] +}); +var _default = validateUrlPath; +exports["default"] = _default; +module.exports = exports.default; -var crypto = __webpack_require__(417) - , parse = __webpack_require__(835).parse - ; +/***/ }), -/** - * Valid keys. - */ +/***/ 2322: +/***/ ((module, exports, __nccwpck_require__) => { -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] +"use strict"; -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS :" - * - * @param {Object} options - * @return {String} - * @api private - */ -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} +var _interopRequireDefault = __nccwpck_require__(3286); -module.exports = authorization -module.exports.authorization = authorization +__nccwpck_require__(6880); -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -module.exports.hmacSha1 = hmacSha1 +var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ +var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign +var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// These URL validation pattern strings are based on the ABNF from RFC 3986 +var validateUrlPchar = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + '[:|@]' + ')', { + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"] +}, 'i'); +var _default = validateUrlPchar; +exports["default"] = _default; +module.exports = exports.default; -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery +/***/ }), -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * \n - * \n - * \n - * \n - * [headers\n] - * - * - * @param {Object} options - * @return {String} - * @api private - */ +/***/ 3878: +/***/ ((module, exports, __nccwpck_require__) => { -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.stringToSign = stringToSign +"use strict"; -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * \n - * - * - * @param {Object} options - * @return {String} - * @api private - */ -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign +__nccwpck_require__(6880); -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPctEncoded = /(?:%[0-9a-f]{2})/i; +var _default = validateUrlPctEncoded; +exports["default"] = _default; +module.exports = exports.default; -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders +/***/ }), -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ +/***/ 3077: +/***/ ((module, exports, __nccwpck_require__) => { -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; +"use strict"; - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPort = /[0-9]{1,5}/; +var _default = validateUrlPort; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 943 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 1697: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - -var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__webpack_require__(382)); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__webpack_require__(284)); - -var _validateUrlUnicodeDomainTld = _interopRequireDefault(__webpack_require__(24)); +var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences -var validateUrlUnicodeDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlUnicodeSubDomainSegment}\.)*(?:#{validateUrlUnicodeDomainSegment}\.)#{validateUrlUnicodeDomainTld})/i, { - validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], - validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], - validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"] +var validateUrlQuery = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { + validateUrlPchar: _validateUrlPchar["default"] }); -var _default = validateUrlUnicodeDomain; +var _default = validateUrlQuery; exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 944 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +/***/ 6579: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -var _interopRequireDefault = __webpack_require__(764); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlScheme = /(?:[a-z][a-z0-9+\-.]*)/i; +var _default = validateUrlScheme; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), + +/***/ 2783: +/***/ ((module, exports, __nccwpck_require__) => { -var _atSigns = _interopRequireDefault(__webpack_require__(1)); +"use strict"; -var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var endMentionMatch = (0, _regexSupplant["default"])(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/, { - atSigns: _atSigns["default"], - latinAccentChars: _latinAccentChars["default"] -}); -var _default = endMentionMatch; +var validateUrlSubDelims = /[!$&'()*+,;=]/i; +var _default = validateUrlSubDelims; exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 945 */, -/* 946 */, -/* 947 */, -/* 948 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// 0 -> Array#forEach -// 1 -> Array#map -// 2 -> Array#filter -// 3 -> Array#some -// 4 -> Array#every -// 5 -> Array#find -// 6 -> Array#findIndex -var ctx = __webpack_require__(743); -var IObject = __webpack_require__(420); -var toObject = __webpack_require__(230); -var toLength = __webpack_require__(853); -var asc = __webpack_require__(789); -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - for (;length > index; index++) if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - if (TYPE) { - if (IS_MAP) result[index] = res; // map - else if (res) switch (TYPE) { - case 3: return true; // some - case 5: return val; // find - case 6: return index; // findIndex - case 2: result.push(val); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; -}; +/***/ 2379: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlSubDomainSegment = /(?:[a-z0-9](?:[a-z0-9_\-]*[a-z0-9])?)/i; +var _default = validateUrlSubDomainSegment; +exports["default"] = _default; +module.exports = exports.default; + /***/ }), -/* 949 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 3907: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = void 0; -var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); - -var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); - -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validGeneralUrlPathChars = (0, _regexSupplant["default"])(/[a-z#{cyrillicLettersAndMarks}0-9!\*';:=\+,\.\$\/%#\[\]\-\u2013_~@\|&#{latinAccentChars}]/i, { - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - latinAccentChars: _latinAccentChars["default"] -}); -var _default = validGeneralUrlPathChars; +// Modified version of RFC 3986 Appendix B +var validateUrlUnencoded = (0, _regexSupplant["default"])('^' + // Full URL +'(?:' + '([^:/?#]+):\\/\\/' + // $1 Scheme +')?' + '([^/?#]*)' + // $2 Authority +'([^?#]*)' + // $3 Path +'(?:' + '\\?([^#]*)' + // $4 Query +')?' + '(?:' + '#(.*)' + // $5 Fragment +')?$', 'i'); +var _default = validateUrlUnencoded; exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 950 */, -/* 951 */ -/***/ (function(module) { -module.exports = function(size) { - return new LruCache(size) -} +/***/ 977: +/***/ ((module, exports, __nccwpck_require__) => { -function LruCache(size) { - this.capacity = size | 0 - this.map = Object.create(null) - this.list = new DoublyLinkedList() -} +"use strict"; -LruCache.prototype.get = function(key) { - var node = this.map[key] - if (node == null) return undefined - this.used(node) - return node.val -} -LruCache.prototype.set = function(key, val) { - var node = this.map[key] - if (node != null) { - node.val = val - } else { - if (!this.capacity) this.prune() - if (!this.capacity) return false - node = new DoublyLinkedNode(key, val) - this.map[key] = node - this.capacity-- - } - this.used(node) - return true -} +var _interopRequireDefault = __nccwpck_require__(3286); -LruCache.prototype.used = function(node) { - this.list.moveToFront(node) -} +__nccwpck_require__(6880); -LruCache.prototype.prune = function() { - var node = this.list.pop() - if (node != null) { - delete this.map[node.key] - this.capacity++ - } -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -function DoublyLinkedList() { - this.firstNode = null - this.lastNode = null -} +var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); -DoublyLinkedList.prototype.moveToFront = function(node) { - if (this.firstNode == node) return +var _validateUrlUnicodeHost = _interopRequireDefault(__nccwpck_require__(3946)); - this.remove(node) +var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); - if (this.firstNode == null) { - this.firstNode = node - this.lastNode = node - node.prev = null - node.next = null - } else { - node.prev = null - node.next = this.firstNode - node.next.prev = node - this.firstNode = node - } -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeAuthority = (0, _regexSupplant["default"])( // $1 userinfo +'(?:(#{validateUrlUserinfo})@)?' + // $2 host +'(#{validateUrlUnicodeHost})' + // $3 port +'(?::(#{validateUrlPort}))?', { + validateUrlUserinfo: _validateUrlUserinfo["default"], + validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], + validateUrlPort: _validateUrlPort["default"] +}, 'i'); +var _default = validateUrlUnicodeAuthority; +exports["default"] = _default; +module.exports = exports.default; -DoublyLinkedList.prototype.pop = function() { - var lastNode = this.lastNode - if (lastNode != null) { - this.remove(lastNode) - } - return lastNode -} +/***/ }), -DoublyLinkedList.prototype.remove = function(node) { - if (this.firstNode == node) { - this.firstNode = node.next - } else if (node.prev != null) { - node.prev.next = node.next - } - if (this.lastNode == node) { - this.lastNode = node.prev - } else if (node.next != null) { - node.next.prev = node.prev - } -} +/***/ 6559: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -function DoublyLinkedNode(key, val) { - this.key = key - this.val = val - this.prev = null - this.next = null -} +var _interopRequireDefault = __nccwpck_require__(3286); -/***/ }), -/* 952 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +__nccwpck_require__(6880); -"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var metaSchema = __webpack_require__(522); +var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__nccwpck_require__(4550)); -module.exports = { - $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js', - definitions: { - simpleTypes: metaSchema.definitions.simpleTypes - }, - type: 'object', - dependencies: { - schema: ['validate'], - $data: ['validate'], - statements: ['inline'], - valid: {not: {required: ['macro']}} - }, - properties: { - type: metaSchema.properties.type, - schema: {type: 'boolean'}, - statements: {type: 'boolean'}, - dependencies: { - type: 'array', - items: {type: 'string'} - }, - metaSchema: {type: 'object'}, - modifying: {type: 'boolean'}, - valid: {type: 'boolean'}, - $data: {type: 'boolean'}, - async: {type: 'boolean'}, - errors: { - anyOf: [ - {type: 'boolean'}, - {const: 'full'} - ] - } - } -}; +var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__nccwpck_require__(2823)); +var _validateUrlUnicodeDomainTld = _interopRequireDefault(__nccwpck_require__(9578)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences +var validateUrlUnicodeDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlUnicodeSubDomainSegment}\.)*(?:#{validateUrlUnicodeDomainSegment}\.)#{validateUrlUnicodeDomainTld})/i, { + validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], + validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], + validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"] +}); +var _default = validateUrlUnicodeDomain; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 953 */, -/* 954 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { -// 19.1.2.14 Object.keys(O) -var toObject = __webpack_require__(230); -var $keys = __webpack_require__(333); +/***/ 2823: +/***/ ((module, exports, __nccwpck_require__) => { -__webpack_require__(675)('keys', function () { - return function keys(it) { - return $keys(toObject(it)); - }; -}); +"use strict"; -/***/ }), -/* 955 */ -/***/ (function(module, __unusedexports, __webpack_require__) { +__nccwpck_require__(6880); -"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; +var _default = validateUrlUnicodeDomainSegment; +exports["default"] = _default; +module.exports = exports.default; +/***/ }), -var util = __webpack_require__(855); +/***/ 9578: +/***/ ((module, exports, __nccwpck_require__) => { -module.exports = SchemaObject; +"use strict"; -function SchemaObject(obj) { - util.copy(obj, this); -} +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences +var validateUrlUnicodeDomainTld = /(?:(?:[a-z]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; +var _default = validateUrlUnicodeDomainTld; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 956 */ -/***/ (function(module) { -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; +/***/ 3946: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -/***/ }), -/* 957 */, -/* 958 */, -/* 959 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// Named EC curves +var _interopRequireDefault = __nccwpck_require__(3286); -// Requires ec.js, jsbn.js, and jsbn2.js -var BigInteger = __webpack_require__(242).BigInteger -var ECCurveFp = __webpack_require__(161).ECCurveFp +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -// ---------------- -// X9ECParameters +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -// constructor -function X9ECParameters(curve,g,n,h) { - this.curve = curve; - this.g = g; - this.n = n; - this.h = h; -} +var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); -function x9getCurve() { - return this.curve; -} +var _validateUrlUnicodeDomain = _interopRequireDefault(__nccwpck_require__(6559)); -function x9getG() { - return this.g; -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlUnicodeDomain}' + ')', { + validateUrlIp: _validateUrlIp["default"], + validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"] +}, 'i'); +var _default = validateUrlUnicodeHost; +exports["default"] = _default; +module.exports = exports.default; -function x9getN() { - return this.n; -} +/***/ }), -function x9getH() { - return this.h; -} +/***/ 4550: +/***/ ((module, exports, __nccwpck_require__) => { -X9ECParameters.prototype.getCurve = x9getCurve; -X9ECParameters.prototype.getG = x9getG; -X9ECParameters.prototype.getN = x9getN; -X9ECParameters.prototype.getH = x9getH; +"use strict"; -// ---------------- -// SECNamedCurves - -function fromHex(s) { return new BigInteger(s, 16); } - -function secp128r1() { - // p = 2^128 - 2^97 - 1 - var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); - //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); - var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "161FF7528B899B2D0C28607CA52C5B86" - + "CF5AC8395BAFEB13C02DA292DDED7A83"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160k1() { - // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" - + "938CF935318FDCED6BC28286531733C3F03C4FEE"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160r1() { - // p = 2^160 - 2^31 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); - var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); - //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); - var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "4A96B5688EF573284664698968C38BB913CBFC82" - + "23A628553168947D59DCC912042351377AC5FB32"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192k1() { - // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); - var a = BigInteger.ZERO; - var b = fromHex("3"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" - + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192r1() { - // p = 2^192 - 2^64 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); - var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); - //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" - + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); - return new X9ECParameters(curve, G, n, h); -} - -function secp224r1() { - // p = 2^224 - 2^96 + 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); - var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); - //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" - + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256r1() { - // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 - var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); - //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); - var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" - + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); - return new X9ECParameters(curve, G, n, h); -} - -// TODO: make this into a proper hashtable -function getSECCurveByName(name) { - if(name == "secp128r1") return secp128r1(); - if(name == "secp160k1") return secp160k1(); - if(name == "secp160r1") return secp160r1(); - if(name == "secp192k1") return secp192k1(); - if(name == "secp192r1") return secp192r1(); - if(name == "secp224r1") return secp224r1(); - if(name == "secp256r1") return secp256r1(); - return null; -} -module.exports = { - "secp128r1":secp128r1, - "secp160k1":secp160k1, - "secp160r1":secp160r1, - "secp192k1":secp192k1, - "secp192r1":secp192r1, - "secp224r1":secp224r1, - "secp256r1":secp256r1 -} +__nccwpck_require__(6880); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeSubDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9_\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; +var _default = validateUrlUnicodeSubDomainSegment; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 960 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { + +/***/ 5318: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", { +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.default = void 0; +})); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnreserved = /[a-z\u0400-\u04FF0-9\-._~]/i; +var _default = validateUrlUnreserved; +exports["default"] = _default; +module.exports = exports.default; -var _validate = _interopRequireDefault(__webpack_require__(634)); +/***/ }), -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ 3026: +/***/ ((module, exports, __nccwpck_require__) => { -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -const byteToHex = []; +"use strict"; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +var _interopRequireDefault = __nccwpck_require__(3286); - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } +__nccwpck_require__(6880); - return uuid; -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; -var _default = stringify; -exports.default = _default; +var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + +var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); + +var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); + +var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUserinfo = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + ':' + ')*', { + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"] +}, 'i'); +var _default = validateUrlUserinfo; +exports["default"] = _default; +module.exports = exports.default; /***/ }), -/* 961 */ -/***/ (function(module) { + +/***/ 9479: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -module.exports = function generate__limit(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<', - $errorKeyword = undefined; - if (!($isData || typeof $schema == 'number' || $schema === undefined)) { - throw new Error($keyword + ' must be number'); - } - if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { - throw new Error($exclusiveKeyword + ' must be number or boolean'); - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $exclType = 'exclType' + $lvl, - $exclIsNumber = 'exclIsNumber' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; - if ($schema === undefined) { - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaValueExcl; - $isData = $isDataExcl; - } - } else { - var $exclIsNumber = typeof $schemaExcl == 'number', - $opStr = $op; - if ($exclIsNumber && $isData) { - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; - } else { - if ($exclIsNumber && $schema === undefined) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; - } - } - $errorKeyword = $errorKeyword || $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; + +__nccwpck_require__(6880); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +__nccwpck_require__(7920); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entities) { + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var prev = entities[0]; + + for (var i = 1; i < entities.length; i++) { + if (prev.indices[1] > entities[i].indices[0]) { + entities.splice(i, 1); + i--; } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; + prev = entities[i]; } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; } +module.exports = exports.default; /***/ }), -/* 962 */, -/* 963 */, -/* 964 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +/***/ 7422: +/***/ ((module, exports, __nccwpck_require__) => { +"use strict"; -var _interopRequireDefault = __webpack_require__(764); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports["default"] = _default; -var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(348)); +__nccwpck_require__(1351); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities) { - (0, _convertUnicodeIndices["default"])(text, entities, true); +// this essentially does text.split(/<|>/) +// except that won't work in IE, where empty strings are ommitted +// so "<>".split(/<|>/) => [] in IE, but is ["", "", ""] in all others +// but "<<".split("<") => ["", "", ""] +function _default(text) { + var firstSplits = text.split('<'), + secondSplits, + allSplits = [], + split; + + for (var i = 0; i < firstSplits.length; i += 1) { + split = firstSplits[i]; + + if (!split) { + allSplits.push(''); + } else { + secondSplits = split.split('>'); + + for (var j = 0; j < secondSplits.length; j += 1) { + allSplits.push(secondSplits[j]); + } + } + } + + return allSplits; } module.exports = exports.default; /***/ }), -/* 965 */ -/***/ (function(module, exports, __webpack_require__) { + +/***/ 1232: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(764); +var _interopRequireDefault = __nccwpck_require__(3286); -__webpack_require__(493); +__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports["default"] = void 0; +})); +exports["default"] = standardizeIndices; + +__nccwpck_require__(5696); + +__nccwpck_require__(9358); + +var _getUnicodeTextLength = _interopRequireDefault(__nccwpck_require__(2091)); + +function standardizeIndices(text, startIndex, endIndex) { + var totalUnicodeTextLength = (0, _getUnicodeTextLength["default"])(text); + var encodingDiff = text.length - totalUnicodeTextLength; + + if (encodingDiff > 0) { + // split the string into codepoints which will map to the API's indices + var byCodePair = Array.from(text); + var beforeText = startIndex === 0 ? '' : byCodePair.slice(0, startIndex).join(''); + var actualText = byCodePair.slice(startIndex, endIndex).join(''); + return [beforeText.length, beforeText.length + actualText.length]; + } + + return [startIndex, endIndex]; +} + +module.exports = exports.default; + +/***/ }), -var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); +/***/ 3995: +/***/ ((module, exports, __nccwpck_require__) => { -var _astralNumerals = _interopRequireDefault(__webpack_require__(767)); +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); + +__nccwpck_require__(6880); -var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; -var _bmpNumerals = _interopRequireDefault(__webpack_require__(307)); +__nccwpck_require__(8395); -var _hashtagSpecialChars = _interopRequireDefault(__webpack_require__(906)); +__nccwpck_require__(1703); -var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); +__nccwpck_require__(571); -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); +var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var hashtagAlphaNumeric = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}#{bmpNumerals}#{hashtagSpecialChars}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}|#{astralNumerals}))/, { - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - bmpNumerals: _bmpNumerals["default"], - hashtagSpecialChars: _hashtagSpecialChars["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - astralLetterAndMarks: _astralLetterAndMarks["default"], - astralNumerals: _astralNumerals["default"] -}); -var _default = hashtagAlphaNumeric; -exports["default"] = _default; +var BOOLEAN_ATTRIBUTES = { + disabled: true, + readonly: true, + multiple: true, + checked: true +}; + +function _default(attributes) { + var htmlAttrs = ''; + + for (var k in attributes) { + var v = attributes[k]; + + if (BOOLEAN_ATTRIBUTES[k]) { + v = v ? k : null; + } + + if (v == null) { + continue; + } + + htmlAttrs += " ".concat((0, _htmlEscape["default"])(k), "=\"").concat((0, _htmlEscape["default"])(v.toString()), "\""); + } + + return htmlAttrs; +} + module.exports = exports.default; /***/ }), -/* 966 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -// ECMAScript 6 symbols shim -var global = __webpack_require__(300); -var has = __webpack_require__(975); -var DESCRIPTORS = __webpack_require__(843); -var $export = __webpack_require__(195); -var redefine = __webpack_require__(976); -var META = __webpack_require__(427).KEY; -var $fails = __webpack_require__(971); -var shared = __webpack_require__(881); -var setToStringTag = __webpack_require__(259); -var uid = __webpack_require__(750); -var wks = __webpack_require__(621); -var wksExt = __webpack_require__(209); -var wksDefine = __webpack_require__(883); -var enumKeys = __webpack_require__(811); -var isArray = __webpack_require__(676); -var anObject = __webpack_require__(990); -var isObject = __webpack_require__(956); -var toObject = __webpack_require__(230); -var toIObject = __webpack_require__(78); -var toPrimitive = __webpack_require__(710); -var createDesc = __webpack_require__(690); -var _create = __webpack_require__(991); -var gOPNExt = __webpack_require__(736); -var $GOPD = __webpack_require__(321); -var $GOPS = __webpack_require__(243); -var $DP = __webpack_require__(973); -var $keys = __webpack_require__(333); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; +Object.defineProperty(exports, "__esModule", ({ value: true })); -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 4886: +/***/ ((module) => { + +"use strict"; + + +var conversions = {}; +module.exports = conversions; + +function sign(x) { + return x < 0 ? -1 : 1; +} + +function evenRound(x) { + // Round x to the nearest integer, choosing the even integer if it lies halfway between two. + if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) + return Math.floor(x); } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; + return Math.round(x); + } +} + +function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; + + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + + return function(V, opts) { + if (!opts) opts = {}; + + let x = +V; -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(996).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(632).f = $propertyIsEnumerable; - $GOPS.f = $getOwnPropertySymbols; + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } + return x; + } - wksExt.f = function (name) { - return wrap(wks(name)); - }; + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); + + if (x < lowerBound) x = lowerBound; + if (x > upperBound) x = upperBound; + return x; + } + + if (!Number.isFinite(x) || x === 0) { + return 0; + } + + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; + + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { // don't return negative zero + return 0; + } + } + + return x; + } } -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); +conversions["void"] = function () { + return undefined; +}; -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); +conversions["boolean"] = function (val) { + return !!val; +}; -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); +conversions["byte"] = createNumberConversion(8, { unsigned: false }); +conversions["octet"] = createNumberConversion(8, { unsigned: true }); -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); +conversions["short"] = createNumberConversion(16, { unsigned: false }); +conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); +conversions["long"] = createNumberConversion(32, { unsigned: false }); +conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); -// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives -// https://bugs.chromium.org/p/v8/issues/detail?id=3443 -var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); +conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); +conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); -$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return $GOPS.f(toObject(it)); - } -}); +conversions["double"] = function (V) { + const x = +V; -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(609)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); + return x; +}; +conversions["unrestricted double"] = function (V) { + const x = +V; -/***/ }), -/* 967 */ -/***/ (function(module) { + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } -module.exports = [[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]; + return x; +}; -/***/ }), -/* 968 */ -/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { +// not quite valid, but good enough for JS +conversions["float"] = conversions["double"]; +conversions["unrestricted float"] = conversions["unrestricted double"]; -"use strict"; +conversions["DOMString"] = function (V, opts) { + if (!opts) opts = {}; -var $export = __webpack_require__(195); -var $indexOf = __webpack_require__(786)(false); -var $native = [].indexOf; -var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } -$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(482)($native)), 'Array', { - // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - return NEGATIVE_ZERO - // convert -0 to +0 - ? $native.apply(this, arguments) || 0 - : $indexOf(this, searchElement, arguments[1]); - } -}); + return String(V); +}; + +conversions["ByteString"] = function (V, opts) { + const x = String(V); + let c = undefined; + for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + return x; +}; -/***/ }), -/* 969 */, -/* 970 */, -/* 971 */ -/***/ (function(module) { +conversions["USVString"] = function (V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 0xD800 || c > 0xDFFF) { + U.push(String.fromCodePoint(c)); + } else if (0xDC00 <= c && c <= 0xDFFF) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + const d = S.charCodeAt(i + 1); + if (0xDC00 <= d && d <= 0xDFFF) { + const a = c & 0x3FF; + const b = d & 0x3FF; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(0xFFFD)); + } + } + } + } -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } + return U.join(''); }; +conversions["Date"] = function (V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return undefined; + } -/***/ }), -/* 972 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + return V; +}; -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ +conversions["RegExp"] = function (V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + + return V; +}; + + +/***/ }), -/** - * Module exports. - */ +/***/ 7537: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -module.exports = __webpack_require__(512) +"use strict"; +const usm = __nccwpck_require__(2158); -/***/ }), -/* 973 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { +exports.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; -var anObject = __webpack_require__(990); -var IE8_DOM_DEFINE = __webpack_require__(704); -var toPrimitive = __webpack_require__(710); -var dP = Object.defineProperty; + let parsedBase = null; + if (base !== undefined) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } -exports.f = __webpack_require__(843) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; -/***/ }), -/* 974 */ -/***/ (function(module, exports, __webpack_require__) { + // TODO: query stuff + } -"use strict"; + get href() { + return usm.serializeURL(this._url); + } + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } -var _interopRequireDefault = __webpack_require__(764); + this._url = parsedURL; + } -__webpack_require__(493); + get origin() { + return usm.serializeURLOrigin(this._url); + } -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = _default; + get protocol() { + return this._url.scheme + ":"; + } -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } -var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); + get username() { + return this._url.username; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractUrlsWithIndices["default"])(text, { - extractUrlsWithoutProtocol: false - }); - return (0, _autoLinkEntities["default"])(text, entities, options); -} + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } -module.exports = exports.default; + usm.setTheUsername(this._url, v); + } -/***/ }), -/* 975 */ -/***/ (function(module) { + get password() { + return this._url.password; + } -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setThePassword(this._url, v); + } -/***/ }), -/* 976 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + get host() { + const url = this._url; -var global = __webpack_require__(300); -var hide = __webpack_require__(609); -var has = __webpack_require__(975); -var SRC = __webpack_require__(750)('src'); -var $toString = __webpack_require__(403); -var TO_STRING = 'toString'; -var TPL = ('' + $toString).split(TO_STRING); + if (url.host === null) { + return ""; + } -__webpack_require__(245).inspectSource = function (it) { - return $toString.call(it); -}; + if (url.port === null) { + return usm.serializeHost(url.host); + } -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); } -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } -/***/ }), -/* 977 */, -/* 978 */ -/***/ (function(module) { + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } -module.exports = isTypedArray -isTypedArray.strict = isStrictTypedArray -isTypedArray.loose = isLooseTypedArray + get hostname() { + if (this._url.host === null) { + return ""; + } -var toString = Object.prototype.toString -var names = { - '[object Int8Array]': true - , '[object Int16Array]': true - , '[object Int32Array]': true - , '[object Uint8Array]': true - , '[object Uint8ClampedArray]': true - , '[object Uint16Array]': true - , '[object Uint32Array]': true - , '[object Float32Array]': true - , '[object Float64Array]': true -} + return usm.serializeHost(this._url.host); + } -function isTypedArray(arr) { - return ( - isStrictTypedArray(arr) - || isLooseTypedArray(arr) - ) -} + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } -function isStrictTypedArray(arr) { - return ( - arr instanceof Int8Array - || arr instanceof Int16Array - || arr instanceof Int32Array - || arr instanceof Uint8Array - || arr instanceof Uint8ClampedArray - || arr instanceof Uint16Array - || arr instanceof Uint32Array - || arr instanceof Float32Array - || arr instanceof Float64Array - ) -} + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } -function isLooseTypedArray(arr) { - return names[toString.call(arr)] -} + get port() { + if (this._url.port === null) { + return ""; + } + return usm.serializeInteger(this._url.port); + } -/***/ }), -/* 979 */, -/* 980 */, -/* 981 */, -/* 982 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } -// Copyright 2017 Joyent, Inc. + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } -module.exports = { - read: read, - write: write -}; + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } -var assert = __webpack_require__(489); -var Buffer = __webpack_require__(726).Buffer; -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var utils = __webpack_require__(270); -var SSHBuffer = __webpack_require__(940); -var Dhe = __webpack_require__(290); - -var supportedAlgos = { - 'rsa-sha1' : 5, - 'rsa-sha256' : 8, - 'rsa-sha512' : 10, - 'ecdsa-p256-sha256' : 13, - 'ecdsa-p384-sha384' : 14 - /* - * ed25519 is hypothetically supported with id 15 - * but the common tools available don't appear to be - * capable of generating/using ed25519 keys - */ -}; + if (this._url.path.length === 0) { + return ""; + } -var supportedAlgosById = {}; -Object.keys(supportedAlgos).forEach(function (k) { - supportedAlgosById[supportedAlgos[k]] = k.toUpperCase(); -}); + return "/" + this._url.path.join("/"); + } -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - var lines = buf.split('\n'); - if (lines[0].match(/^Private-key-format\: v1/)) { - var algElems = lines[1].split(' '); - var algoNum = parseInt(algElems[1], 10); - var algoName = algElems[2]; - if (!supportedAlgosById[algoNum]) - throw (new Error('Unsupported algorithm: ' + algoName)); - return (readDNSSECPrivateKey(algoNum, lines.slice(2))); - } + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } - // skip any comment-lines - var line = 0; - /* JSSTYLED */ - while (lines[line].match(/^\;/)) - line++; - // we should now have *one single* line left with our KEY on it. - if ((lines[line].match(/\. IN KEY /) || - lines[line].match(/\. IN DNSKEY /)) && lines[line+1].length === 0) { - return (readRFC3110(lines[line])); - } - throw (new Error('Cannot parse dnssec key')); -} - -function readRFC3110(keyString) { - var elems = keyString.split(' '); - //unused var flags = parseInt(elems[3], 10); - //unused var protocol = parseInt(elems[4], 10); - var algorithm = parseInt(elems[5], 10); - if (!supportedAlgosById[algorithm]) - throw (new Error('Unsupported algorithm: ' + algorithm)); - var base64key = elems.slice(6, elems.length).join(); - var keyBuffer = Buffer.from(base64key, 'base64'); - if (supportedAlgosById[algorithm].match(/^RSA-/)) { - // join the rest of the body into a single base64-blob - var publicExponentLen = keyBuffer.readUInt8(0); - if (publicExponentLen != 3 && publicExponentLen != 1) - throw (new Error('Cannot parse dnssec key: ' + - 'unsupported exponent length')); - - var publicExponent = keyBuffer.slice(1, publicExponentLen+1); - publicExponent = utils.mpNormalize(publicExponent); - var modulus = keyBuffer.slice(1+publicExponentLen); - modulus = utils.mpNormalize(modulus); - // now, make the key - var rsaKey = { - type: 'rsa', - parts: [] - }; - rsaKey.parts.push({ name: 'e', data: publicExponent}); - rsaKey.parts.push({ name: 'n', data: modulus}); - return (new Key(rsaKey)); - } - if (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' || - supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') { - var curve = 'nistp384'; - var size = 384; - if (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) { - curve = 'nistp256'; - size = 256; - } + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } - var ecdsaKey = { - type: 'ecdsa', - curve: curve, - size: size, - parts: [ - {name: 'curve', data: Buffer.from(curve) }, - {name: 'Q', data: utils.ecNormalize(keyBuffer) } - ] - }; - return (new Key(ecdsaKey)); - } - throw (new Error('Unsupported algorithm: ' + - supportedAlgosById[algorithm])); -} - -function elementToBuf(e) { - return (Buffer.from(e.split(' ')[1], 'base64')); -} - -function readDNSSECRSAPrivateKey(elements) { - var rsaParams = {}; - elements.forEach(function (element) { - if (element.split(' ')[0] === 'Modulus:') - rsaParams['n'] = elementToBuf(element); - else if (element.split(' ')[0] === 'PublicExponent:') - rsaParams['e'] = elementToBuf(element); - else if (element.split(' ')[0] === 'PrivateExponent:') - rsaParams['d'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Prime1:') - rsaParams['p'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Prime2:') - rsaParams['q'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Exponent1:') - rsaParams['dmodp'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Exponent2:') - rsaParams['dmodq'] = elementToBuf(element); - else if (element.split(' ')[0] === 'Coefficient:') - rsaParams['iqmp'] = elementToBuf(element); - }); - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'e', data: utils.mpNormalize(rsaParams['e'])}, - { name: 'n', data: utils.mpNormalize(rsaParams['n'])}, - { name: 'd', data: utils.mpNormalize(rsaParams['d'])}, - { name: 'p', data: utils.mpNormalize(rsaParams['p'])}, - { name: 'q', data: utils.mpNormalize(rsaParams['q'])}, - { name: 'dmodp', - data: utils.mpNormalize(rsaParams['dmodp'])}, - { name: 'dmodq', - data: utils.mpNormalize(rsaParams['dmodq'])}, - { name: 'iqmp', - data: utils.mpNormalize(rsaParams['iqmp'])} - ] - }; - return (new PrivateKey(key)); -} + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } -function readDNSSECPrivateKey(alg, elements) { - if (supportedAlgosById[alg].match(/^RSA-/)) { - return (readDNSSECRSAPrivateKey(elements)); - } - if (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' || - supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { - var d = Buffer.from(elements[0].split(' ')[1], 'base64'); - var curve = 'nistp384'; - var size = 384; - if (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { - curve = 'nistp256'; - size = 256; - } - // DNSSEC generates the public-key on the fly (go calculate it) - var publicKey = utils.publicFromPrivateECDSA(curve, d); - var Q = publicKey.part['Q'].data; - var ecdsaKey = { - type: 'ecdsa', - curve: curve, - size: size, - parts: [ - {name: 'curve', data: Buffer.from(curve) }, - {name: 'd', data: d }, - {name: 'Q', data: Q } - ] - }; - return (new PrivateKey(ecdsaKey)); - } - throw (new Error('Unsupported algorithm: ' + supportedAlgosById[alg])); -} - -function dnssecTimestamp(date) { - var year = date.getFullYear() + ''; //stringify - var month = (date.getMonth() + 1); - var timestampStr = year + month + date.getUTCDate(); - timestampStr += '' + date.getUTCHours() + date.getUTCMinutes(); - timestampStr += date.getUTCSeconds(); - return (timestampStr); -} - -function rsaAlgFromOptions(opts) { - if (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1') - return ('5 (RSASHA1)'); - else if (opts.hashAlgo === 'sha256') - return ('8 (RSASHA256)'); - else if (opts.hashAlgo === 'sha512') - return ('10 (RSASHA512)'); - else - throw (new Error('Unknown or unsupported hash: ' + - opts.hashAlgo)); -} - -function writeRSA(key, options) { - // if we're missing parts, add them. - if (!key.part.dmodp || !key.part.dmodq) { - utils.addRSAMissing(key); - } + return "?" + this._url.query; + } - var out = ''; - out += 'Private-key-format: v1.3\n'; - out += 'Algorithm: ' + rsaAlgFromOptions(options) + '\n'; - var n = utils.mpDenormalize(key.part['n'].data); - out += 'Modulus: ' + n.toString('base64') + '\n'; - var e = utils.mpDenormalize(key.part['e'].data); - out += 'PublicExponent: ' + e.toString('base64') + '\n'; - var d = utils.mpDenormalize(key.part['d'].data); - out += 'PrivateExponent: ' + d.toString('base64') + '\n'; - var p = utils.mpDenormalize(key.part['p'].data); - out += 'Prime1: ' + p.toString('base64') + '\n'; - var q = utils.mpDenormalize(key.part['q'].data); - out += 'Prime2: ' + q.toString('base64') + '\n'; - var dmodp = utils.mpDenormalize(key.part['dmodp'].data); - out += 'Exponent1: ' + dmodp.toString('base64') + '\n'; - var dmodq = utils.mpDenormalize(key.part['dmodq'].data); - out += 'Exponent2: ' + dmodq.toString('base64') + '\n'; - var iqmp = utils.mpDenormalize(key.part['iqmp'].data); - out += 'Coefficient: ' + iqmp.toString('base64') + '\n'; - // Assume that we're valid as-of now - var timestamp = new Date(); - out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; - return (Buffer.from(out, 'ascii')); -} - -function writeECDSA(key, options) { - var out = ''; - out += 'Private-key-format: v1.3\n'; - - if (key.curve === 'nistp256') { - out += 'Algorithm: 13 (ECDSAP256SHA256)\n'; - } else if (key.curve === 'nistp384') { - out += 'Algorithm: 14 (ECDSAP384SHA384)\n'; - } else { - throw (new Error('Unsupported curve')); - } - var base64Key = key.part['d'].data.toString('base64'); - out += 'PrivateKey: ' + base64Key + '\n'; + set search(v) { + // TODO: query stuff - // Assume that we're valid as-of now - var timestamp = new Date(); - out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; - out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; + const url = this._url; - return (Buffer.from(out, 'ascii')); -} + if (v === "") { + url.query = null; + return; + } -function write(key, options) { - if (PrivateKey.isPrivateKey(key)) { - if (key.type === 'rsa') { - return (writeRSA(key, options)); - } else if (key.type === 'ecdsa') { - return (writeECDSA(key, options)); - } else { - throw (new Error('Unsupported algorithm: ' + key.type)); - } - } else if (Key.isKey(key)) { - /* - * RFC3110 requires a keyname, and a keytype, which we - * don't really have a mechanism for specifying such - * additional metadata. - */ - throw (new Error('Format "dnssec" only supports ' + - 'writing private keys')); - } else { - throw (new Error('key is not a Key or PrivateKey')); - } -} + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } -/***/ }), -/* 983 */ -/***/ (function(module) { + return "#" + this._url.fragment; + } -module.exports = ["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","eq.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","gov.cl","gob.cl","co.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","*.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","net.so","org.so","sr","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","cartier","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","chrysler","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dodge","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","everbank","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","ladbrokes","lamborghini","lamer","lancaster","lancia","lancome","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","liaison","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","mobily","moda","moe","moi","mom","monash","money","monster","mopar","mormon","mortgage","moscow","moto","motorcycles","mov","movie","movistar","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","piaget","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","space","sport","spot","spreadbetting","srl","srt","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","telefonica","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","uconnect","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","vistaprint","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","warman","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","موبايلي","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","beep.pl","barsy.ca","*.compute.estate","*.alces.network","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","go-vip.co","go-vip.net","wpcomstaging.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","instantcloud.cn","ras.ru","qa2.com","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","site.builder.nu","enterprisecloud.nu","zone.id"]; + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } -/***/ }), -/* 984 */, -/* 985 */ -/***/ (function(module, exports, __webpack_require__) { + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } -"use strict"; + toJSON() { + return this.href; + } +}; -var _interopRequireDefault = __webpack_require__(764); +/***/ }), -__webpack_require__(493); +/***/ 3394: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports["default"] = void 0; +"use strict"; -var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _validateUrlDomainSegment = _interopRequireDefault(__webpack_require__(729)); +const conversions = __nccwpck_require__(4886); +const utils = __nccwpck_require__(3185); +const Impl = __nccwpck_require__(7537); -var _validateUrlDomainTld = _interopRequireDefault(__webpack_require__(872)); +const impl = utils.implSymbol; + +function URL(url) { + if (!this || this[impl] || !(this instanceof URL)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== undefined) { + args[1] = conversions["USVString"](args[1]); + } -var _validateUrlSubDomainSegment = _interopRequireDefault(__webpack_require__(370)); + module.exports.setup(this, args); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlSubDomainSegment}\.)*(?:#{validateUrlDomainSegment}\.)#{validateUrlDomainTld})/i, { - validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], - validateUrlDomainSegment: _validateUrlDomainSegment["default"], - validateUrlDomainTld: _validateUrlDomainTld["default"] +URL.prototype.toJSON = function toJSON() { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); +}; +Object.defineProperty(URL.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true }); -var _default = validateUrlDomain; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), -/* 986 */ -/***/ (function(module, exports, __webpack_require__) { +URL.prototype.toString = function () { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; +}; -"use strict"; +Object.defineProperty(URL.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(URL.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true +}); -__webpack_require__(493); +Object.defineProperty(URL.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true +}); -Object.defineProperty(exports, "__esModule", { - value: true +Object.defineProperty(URL.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true }); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var rtlChars = /[\u0600-\u06FF]|[\u0750-\u077F]|[\u0590-\u05FF]|[\uFE70-\uFEFF]/gm; -var _default = rtlChars; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), -/* 987 */ -/***/ (function(module, exports, __webpack_require__) { +Object.defineProperty(URL.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true +}); -"use strict"; +Object.defineProperty(URL.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(URL.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true +}); -var _interopRequireDefault = __webpack_require__(764); +Object.defineProperty(URL.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true +}); -__webpack_require__(493); +Object.defineProperty(URL.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true +}); -Object.defineProperty(exports, "__esModule", { - value: true +Object.defineProperty(URL.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true }); -exports["default"] = _default; -var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); -var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); +module.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) privateData = {}; + privateData.wrapper = obj; + + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL, + expose: { + Window: { URL: URL }, + Worker: { URL: URL } + } +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractCashtagsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); -} -module.exports = exports.default; /***/ }), -/* 988 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -module.exports = __webpack_require__(141); +/***/ 8665: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -/***/ }), -/* 989 */, -/* 990 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -var isObject = __webpack_require__(956); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; +exports.URL = __nccwpck_require__(3394)["interface"]; +exports.serializeURL = __nccwpck_require__(2158).serializeURL; +exports.serializeURLOrigin = __nccwpck_require__(2158).serializeURLOrigin; +exports.basicURLParse = __nccwpck_require__(2158).basicURLParse; +exports.setTheUsername = __nccwpck_require__(2158).setTheUsername; +exports.setThePassword = __nccwpck_require__(2158).setThePassword; +exports.serializeHost = __nccwpck_require__(2158).serializeHost; +exports.serializeInteger = __nccwpck_require__(2158).serializeInteger; +exports.parseURL = __nccwpck_require__(2158).parseURL; /***/ }), -/* 991 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(990); -var dPs = __webpack_require__(20); -var enumBugKeys = __webpack_require__(5); -var IE_PROTO = __webpack_require__(331)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(598)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(925).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; +/***/ 2158: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; +"use strict"; + +const punycode = __nccwpck_require__(5477); +const tr46 = __nccwpck_require__(4256); + +const specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +const failure = Symbol("failure"); + +function countSymbols(str) { + return punycode.ucs2.decode(str).length; +} + +function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? undefined : String.fromCodePoint(c); +} + +function isASCIIDigit(c) { + return c >= 0x30 && c <= 0x39; +} + +function isASCIIAlpha(c) { + return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); +} + +function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); +} + +function isASCIIHex(c) { + return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); +} + +function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; +} + +function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; +} + +function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); +} + +function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); +} + +function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; +} + +function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== undefined; +} + +function isSpecial(url) { + return isSpecialScheme(url.scheme); +} + +function defaultPort(scheme) { + return specialSchemes[scheme]; +} + +function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + + return "%" + hex; +} + +function utf8PercentEncode(c) { + const buf = new Buffer(c); + + let str = ""; + + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + + return str; +} + +function utf8PercentDecode(str) { + const input = new Buffer(str); + const output = []; + for (let i = 0; i < input.length; ++i) { + if (input[i] !== 37) { + output.push(input[i]); + } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { + output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); + i += 2; + } else { + output.push(input[i]); + } + } + return new Buffer(output).toString(); +} + +function isC0ControlPercentEncode(c) { + return c <= 0x1F || c > 0x7E; +} + +const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); +function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); +} + +const extraUserinfoPercentEncodeSet = + new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); +function isUserinfoPercentEncode(c) { + return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); +} + +function percentEncodeChar(c, encodeSetPredicate) { + const cStr = String.fromCodePoint(c); + + if (encodeSetPredicate(c)) { + return utf8PercentEncode(cStr); + } + + return cStr; +} + +function parseIPv4Number(input) { + let R = 10; + + if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { + input = input.substring(2); + R = 16; + } else if (input.length >= 2 && input.charAt(0) === "0") { + input = input.substring(1); + R = 8; + } + + if (input === "") { + return 0; + } + + const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/); + if (regex.test(input)) { + return failure; + } + + return parseInt(input, R); +} + +function parseIPv4(input) { + const parts = input.split("."); + if (parts[parts.length - 1] === "") { + if (parts.length > 1) { + parts.pop(); + } + } + + if (parts.length > 4) { + return input; + } + + const numbers = []; + for (const part of parts) { + if (part === "") { + return input; + } + const n = parseIPv4Number(part); + if (n === failure) { + return input; + } + + numbers.push(n); + } + + for (let i = 0; i < numbers.length - 1; ++i) { + if (numbers[i] > 255) { + return failure; + } + } + if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { + return failure; + } + + let ipv4 = numbers.pop(); + let counter = 0; + + for (const n of numbers) { + ipv4 += n * Math.pow(256, 3 - counter); + ++counter; + } + + return ipv4; +} + +function serializeIPv4(address) { + let output = ""; + let n = address; + + for (let i = 1; i <= 4; ++i) { + output = String(n % 256) + output; + if (i !== 4) { + output = "." + output; + } + n = Math.floor(n / 256); + } + + return output; +} + +function parseIPv6(input) { + const address = [0, 0, 0, 0, 0, 0, 0, 0]; + let pieceIndex = 0; + let compress = null; + let pointer = 0; + + input = punycode.ucs2.decode(input); + + if (input[pointer] === 58) { + if (input[pointer + 1] !== 58) { + return failure; + } + + pointer += 2; + ++pieceIndex; + compress = pieceIndex; + } + + while (pointer < input.length) { + if (pieceIndex === 8) { + return failure; + } + + if (input[pointer] === 58) { + if (compress !== null) { + return failure; + } + ++pointer; + ++pieceIndex; + compress = pieceIndex; + continue; + } + + let value = 0; + let length = 0; + + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 0x10 + parseInt(at(input, pointer), 16); + ++pointer; + ++length; + } + + if (input[pointer] === 46) { + if (length === 0) { + return failure; + } + + pointer -= length; + + if (pieceIndex > 6) { + return failure; + } + + let numbersSeen = 0; + + while (input[pointer] !== undefined) { + let ipv4Piece = null; + + if (numbersSeen > 0) { + if (input[pointer] === 46 && numbersSeen < 4) { + ++pointer; + } else { + return failure; + } + } + + if (!isASCIIDigit(input[pointer])) { + return failure; + } + + while (isASCIIDigit(input[pointer])) { + const number = parseInt(at(input, pointer)); + if (ipv4Piece === null) { + ipv4Piece = number; + } else if (ipv4Piece === 0) { + return failure; + } else { + ipv4Piece = ipv4Piece * 10 + number; + } + if (ipv4Piece > 255) { + return failure; + } + ++pointer; + } + + address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece; + + ++numbersSeen; + + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + + if (numbersSeen !== 4) { + return failure; + } + + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === undefined) { + return failure; + } + } else if (input[pointer] !== undefined) { + return failure; + } + + address[pieceIndex] = value; + ++pieceIndex; + } + + if (compress !== null) { + let swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + const temp = address[compress + swaps - 1]; + address[compress + swaps - 1] = address[pieceIndex]; + address[pieceIndex] = temp; + --pieceIndex; + --swaps; + } + } else if (compress === null && pieceIndex !== 8) { + return failure; + } + + return address; +} + +function serializeIPv6(address) { + let output = ""; + const seqResult = findLongestZeroSequence(address); + const compress = seqResult.idx; + let ignore0 = false; + + for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { + if (ignore0 && address[pieceIndex] === 0) { + continue; + } else if (ignore0) { + ignore0 = false; + } + + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + + output += address[pieceIndex].toString(16); + + if (pieceIndex !== 7) { + output += ":"; + } + } + + return output; +} + +function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + + return parseIPv6(input.substring(1, input.length - 1)); + } + + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + + return asciiDomain; +} + +function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; +} + +function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; // only find elements > 1 + let currStart = null; + let currLen = 0; + + for (let i = 0; i < arr.length; ++i) { + if (arr[i] !== 0) { + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + + currStart = null; + currLen = 0; + } else { + if (currStart === null) { + currStart = i; + } + ++currLen; + } + } + + // if trailing zeros + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + + return { + idx: maxIdx, + len: maxLen + }; +} + +function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + + // IPv6 serializer + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + + return host; +} + +function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); +} + +function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); +} + +function shortenPath(url) { + const path = url.path; + if (path.length === 0) { + return; + } + if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + + path.pop(); +} + +function includesCredentials(url) { + return url.username !== "" || url.password !== ""; +} + +function cannotHaveAUsernamePasswordPort(url) { + return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; +} + +function isNormalizedWindowsDriveLetter(string) { + return /^[A-Za-z]:$/.test(string); +} + +function URLStateMachine(input, base, encodingOverride, url, stateOverride) { + this.pointer = 0; + this.input = input; + this.base = base || null; + this.encodingOverride = encodingOverride || "utf-8"; + this.stateOverride = stateOverride; + this.url = url; + this.failure = false; + this.parseError = false; + + if (!this.url) { + this.url = { + scheme: "", + username: "", + password: "", + host: null, + port: null, + path: [], + query: null, + fragment: null, + + cannotBeABaseURL: false + }; + + const res = trimControlChars(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + } + + const res = trimTabAndNewline(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + + this.state = stateOverride || "scheme start"; + + this.buffer = ""; + this.atFlag = false; + this.arrFlag = false; + this.passwordTokenSeenFlag = false; + + this.input = punycode.ucs2.decode(this.input); + + for (; this.pointer <= this.input.length; ++this.pointer) { + const c = this.input[this.pointer]; + const cStr = isNaN(c) ? undefined : String.fromCodePoint(c); + + // exec state machine + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; // terminate algorithm + } else if (ret === failure) { + this.failure = true; + break; + } + } +} + +URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { + if (isASCIIAlpha(c)) { + this.buffer += cStr.toLowerCase(); + this.state = "scheme"; + } else if (!this.stateOverride) { + this.state = "no scheme"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { + if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { + this.buffer += cStr.toLowerCase(); + } else if (c === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false; + } + + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false; + } + + if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { + return false; + } + + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + if (this.url.scheme === "file") { + if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { + this.parseError = true; + } + this.state = "file"; + } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { + this.state = "special relative or authority"; + } else if (isSpecial(this.url)) { + this.state = "special authority slashes"; + } else if (this.input[this.pointer + 1] === 47) { + this.state = "path or authority"; + ++this.pointer; + } else { + this.url.cannotBeABaseURL = true; + this.url.path.push(""); + this.state = "cannot-be-a-base-URL path"; + } + } else if (!this.stateOverride) { + this.buffer = ""; + this.state = "no scheme"; + this.pointer = -1; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { + if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { + return failure; + } else if (this.base.cannotBeABaseURL && c === 35) { + this.url.scheme = this.base.scheme; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.url.cannotBeABaseURL = true; + this.state = "fragment"; + } else if (this.base.scheme === "file") { + this.state = "file"; + --this.pointer; + } else { + this.state = "relative"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "relative"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse relative"] = function parseRelative(c) { + this.url.scheme = this.base.scheme; + if (isNaN(c)) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 47) { + this.state = "relative slash"; + } else if (c === 63) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else if (isSpecial(this.url) && c === 92) { + this.parseError = true; + this.state = "relative slash"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(0, this.base.path.length - 1); + + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { + if (isSpecial(this.url) && (c === 47 || c === 92)) { + if (c === 92) { + this.parseError = true; + } + this.state = "special authority ignore slashes"; + } else if (c === 47) { + this.state = "authority"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "special authority ignore slashes"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { + if (c !== 47 && c !== 92) { + this.state = "authority"; + --this.pointer; + } else { + this.parseError = true; + } + + return true; +}; + +URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { + if (c === 64) { + this.parseError = true; + if (this.atFlag) { + this.buffer = "%40" + this.buffer; + } + this.atFlag = true; + + // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars + const len = countSymbols(this.buffer); + for (let pointer = 0; pointer < len; ++pointer) { + const codePoint = this.buffer.codePointAt(pointer); + + if (codePoint === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true; + continue; + } + const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); + if (this.passwordTokenSeenFlag) { + this.url.password += encodedCodePoints; + } else { + this.url.username += encodedCodePoints; + } + } + this.buffer = ""; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92)) { + if (this.atFlag && this.buffer === "") { + this.parseError = true; + return failure; + } + this.pointer -= countSymbols(this.buffer) + 1; + this.buffer = ""; + this.state = "host"; + } else { + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse hostname"] = +URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { + if (this.stateOverride && this.url.scheme === "file") { + --this.pointer; + this.state = "file host"; + } else if (c === 58 && !this.arrFlag) { + if (this.buffer === "") { + this.parseError = true; + return failure; + } + + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + + this.url.host = host; + this.buffer = ""; + this.state = "port"; + if (this.stateOverride === "hostname") { + return false; + } + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92)) { + --this.pointer; + if (isSpecial(this.url) && this.buffer === "") { + this.parseError = true; + return failure; + } else if (this.stateOverride && this.buffer === "" && + (includesCredentials(this.url) || this.url.port !== null)) { + this.parseError = true; + return false; + } + + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + + this.url.host = host; + this.buffer = ""; + this.state = "path start"; + if (this.stateOverride) { + return false; + } + } else { + if (c === 91) { + this.arrFlag = true; + } else if (c === 93) { + this.arrFlag = false; + } + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { + if (isASCIIDigit(c)) { + this.buffer += cStr; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92) || + this.stateOverride) { + if (this.buffer !== "") { + const port = parseInt(this.buffer); + if (port > Math.pow(2, 16) - 1) { + this.parseError = true; + return failure; + } + this.url.port = port === defaultPort(this.url.scheme) ? null : port; + this.buffer = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); + +URLStateMachine.prototype["parse file"] = function parseFile(c) { + this.url.scheme = "file"; + + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file slash"; + } else if (this.base !== null && this.base.scheme === "file") { + if (isNaN(c)) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 63) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || + (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file host"; + } else { + if (this.base !== null && this.base.scheme === "file") { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]); + } else { + this.url.host = this.base.host; + } + } + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { + if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { + --this.pointer; + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true; + this.state = "path"; + } else if (this.buffer === "") { + this.url.host = ""; + if (this.stateOverride) { + return false; + } + this.state = "path start"; + } else { + let host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + if (host === "localhost") { + host = ""; + } + this.url.host = host; + + if (this.stateOverride) { + return false; + } + + this.buffer = ""; + this.state = "path start"; + } + } else { + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { + if (isSpecial(this.url)) { + if (c === 92) { + this.parseError = true; + } + this.state = "path"; + + if (c !== 47 && c !== 92) { + --this.pointer; + } + } else if (!this.stateOverride && c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (!this.stateOverride && c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else if (c !== undefined) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + + return true; +}; + +URLStateMachine.prototype["parse path"] = function parsePath(c) { + if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || + (!this.stateOverride && (c === 63 || c === 35))) { + if (isSpecial(this.url) && c === 92) { + this.parseError = true; + } + + if (isDoubleDot(this.buffer)) { + shortenPath(this.url); + if (c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } + } else if (isSingleDot(this.buffer) && c !== 47 && + !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } else if (!isSingleDot(this.buffer)) { + if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { + if (this.url.host !== "" && this.url.host !== null) { + this.parseError = true; + this.url.host = ""; + } + this.buffer = this.buffer[0] + ":"; + } + this.url.path.push(this.buffer); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + // TODO: If c is not a URL code point and not "%", parse error. + + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + + return true; +}; + +URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else { + // TODO: Add: not a URL code point + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + if (!isNaN(c)) { + this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + } + } + + return true; +}; + +URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { + if (isNaN(c) || (!this.stateOverride && c === 35)) { + if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { + this.encodingOverride = "utf-8"; + } + + const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || + buffer[i] === 0x3C || buffer[i] === 0x3E) { + this.url.query += percentEncode(buffer[i]); + } else { + this.url.query += String.fromCodePoint(buffer[i]); + } + } + + this.buffer = ""; + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { // do nothing + } else if (c === 0x0) { + this.parseError = true; + } else { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); + } + + return true; +}; + +function serializeURL(url, excludeFragment) { + let output = url.scheme + ":"; + if (url.host !== null) { + output += "//"; + + if (url.username !== "" || url.password !== "") { + output += url.username; + if (url.password !== "") { + output += ":" + url.password; + } + output += "@"; + } + + output += serializeHost(url.host); + + if (url.port !== null) { + output += ":" + url.port; + } + } else if (url.host === null && url.scheme === "file") { + output += "//"; + } + + if (url.cannotBeABaseURL) { + output += url.path[0]; + } else { + for (const string of url.path) { + output += "/" + string; + } + } + + if (url.query !== null) { + output += "?" + url.query; + } + + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + + return output; +} + +function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + + if (tuple.port !== null) { + result += ":" + tuple.port; + } + + return result; +} + +module.exports.serializeURL = serializeURL; + +module.exports.serializeURLOrigin = function (url) { + // https://url.spec.whatwg.org/#concept-url-origin + switch (url.scheme) { + case "blob": + try { + return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); + } catch (e) { + // serializing an opaque origin returns "null" + return "null"; + } + case "ftp": + case "gopher": + case "http": + case "https": + case "ws": + case "wss": + return serializeOrigin({ + scheme: url.scheme, + host: url.host, + port: url.port + }); + case "file": + // spec says "exercise to the reader", chrome says "file://" + return "file://"; + default: + // serializing an opaque origin returns "null" + return "null"; + } +}; + +module.exports.basicURLParse = function (input, options) { + if (options === undefined) { + options = {}; + } + + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + + return usm.url; +}; + +module.exports.setTheUsername = function (url, username) { + url.username = ""; + const decoded = punycode.ucs2.decode(username); + for (let i = 0; i < decoded.length; ++i) { + url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } +}; + +module.exports.setThePassword = function (url, password) { + url.password = ""; + const decoded = punycode.ucs2.decode(password); + for (let i = 0; i < decoded.length; ++i) { + url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } +}; + +module.exports.serializeHost = serializeHost; + +module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + +module.exports.serializeInteger = function (integer) { + return String(integer); +}; + +module.exports.parseURL = function (input, options) { + if (options === undefined) { + options = {}; + } + + // We don't handle blobs, so this just delegates: + return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); +}; /***/ }), -/* 992 */ -/***/ (function(module) { + +/***/ 3185: +/***/ ((module) => { "use strict"; -var traverse = module.exports = function (schema, opts, cb) { - // Legacy support for v0.3.1 and earlier. - if (typeof opts == 'function') { - cb = opts; - opts = {}; +module.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); } - - cb = opts.cb || cb; - var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; - var post = cb.post || function() {}; - - _traverse(opts, pre, post, schema, '', schema); }; +module.exports.wrapperSymbol = Symbol("wrapper"); +module.exports.implSymbol = Symbol("impl"); -traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true -}; - -traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true +module.exports.wrapperForImpl = function (impl) { + return impl[module.exports.wrapperSymbol]; }; -traverse.propsKeywords = { - definitions: true, - properties: true, - patternProperties: true, - dependencies: true +module.exports.implForWrapper = function (wrapper) { + return wrapper[module.exports.implSymbol]; }; -traverse.skipKeywords = { - default: true, - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true -}; -function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == 'object' && !Array.isArray(schema)) { - pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i=0; i { -function escapeJsonPtr(str) { - return str.replace(/~/g, '~0').replace(/\//g, '~1'); -} +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') -/***/ }), -/* 993 */ -/***/ (function(module, __unusedexports, __webpack_require__) { + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) -// check on default Array iterator -var Iterators = __webpack_require__(907); -var ITERATOR = __webpack_require__(621)('iterator'); -var ArrayProto = Array.prototype; + return wrapper -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), -/* 994 */, -/* 995 */ -/***/ (function(module, __unusedexports, __webpack_require__) { - -// Copyright 2016 Joyent, Inc. -var x509 = __webpack_require__(323); +/***/ 2877: +/***/ ((module) => { -module.exports = { - read: read, - verify: x509.verify, - sign: x509.sign, - write: write -}; +module.exports = eval("require")("encoding"); -var assert = __webpack_require__(489); -var asn1 = __webpack_require__(325); -var Buffer = __webpack_require__(726).Buffer; -var algs = __webpack_require__(603); -var utils = __webpack_require__(270); -var Key = __webpack_require__(500); -var PrivateKey = __webpack_require__(502); -var pem = __webpack_require__(268); -var Identity = __webpack_require__(378); -var Signature = __webpack_require__(575); -var Certificate = __webpack_require__(202); - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - var lines = buf.trim().split(/[\r\n]+/g); +/***/ }), - var m; - var si = -1; - while (!m && si < lines.length) { - m = lines[++si].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/); - } - assert.ok(m, 'invalid PEM header'); +/***/ 9491: +/***/ ((module) => { - var m2; - var ei = lines.length; - while (!m2 && ei > 0) { - m2 = lines[--ei].match(/*JSSTYLED*/ - /[-]+[ ]*END CERTIFICATE[ ]*[-]+/); - } - assert.ok(m2, 'invalid PEM footer'); - - lines = lines.slice(si, ei + 1); - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } +"use strict"; +module.exports = require("assert"); - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = Buffer.from(lines, 'base64'); - - return (x509.read(buf, options)); -} - -function write(cert, options) { - var dbuf = x509.write(cert, options); - - var header = 'CERTIFICATE'; - var tmp = dbuf.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = Buffer.alloc(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); +/***/ }), - return (buf.slice(0, o)); -} +/***/ 6113: +/***/ ((module) => { +"use strict"; +module.exports = require("crypto"); /***/ }), -/* 996 */ -/***/ (function(__unusedmodule, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(206); -var hiddenKeys = __webpack_require__(5).concat('length', 'prototype'); -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; +/***/ 2361: +/***/ ((module) => { +"use strict"; +module.exports = require("events"); /***/ }), -/* 997 */, -/* 998 */ -/***/ (function(module, __unusedexports, __webpack_require__) { -// Copyright 2011 Mark Cavage All rights reserved. +/***/ 7147: +/***/ ((module) => { -var assert = __webpack_require__(357); -var Buffer = __webpack_require__(726).Buffer; -var ASN1 = __webpack_require__(362); -var errors = __webpack_require__(584); +"use strict"; +module.exports = require("fs"); +/***/ }), -// --- Globals +/***/ 3685: +/***/ ((module) => { -var newInvalidAsn1Error = errors.newInvalidAsn1Error; +"use strict"; +module.exports = require("http"); -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; +/***/ }), +/***/ 5687: +/***/ ((module) => { -// --- Helpers +"use strict"; +module.exports = require("https"); -function merge(from, to) { - assert.ok(from); - assert.equal(typeof (from), 'object'); - assert.ok(to); - assert.equal(typeof (to), 'object'); +/***/ }), - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function (key) { - if (to[key]) - return; +/***/ 1808: +/***/ ((module) => { - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); +"use strict"; +module.exports = require("net"); - return to; -} +/***/ }), +/***/ 2037: +/***/ ((module) => { +"use strict"; +module.exports = require("os"); -// --- API +/***/ }), -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); +/***/ 1017: +/***/ ((module) => { - this._buf = Buffer.alloc(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; +"use strict"; +module.exports = require("path"); - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; -} +/***/ }), -Object.defineProperty(Writer.prototype, 'buffer', { - get: function () { - if (this._seq.length) - throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)'); +/***/ 5477: +/***/ ((module) => { - return (this._buf.slice(0, this._offset)); - } -}); +"use strict"; +module.exports = require("punycode"); -Writer.prototype.writeByte = function (b) { - if (typeof (b) !== 'number') - throw new TypeError('argument must be a Number'); +/***/ }), - this._ensure(1); - this._buf[this._offset++] = b; -}; +/***/ 2781: +/***/ ((module) => { +"use strict"; +module.exports = require("stream"); -Writer.prototype.writeInt = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Integer; +/***/ }), - var sz = 4; +/***/ 4404: +/***/ ((module) => { - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) && - (sz > 1)) { - sz--; - i <<= 8; - } +"use strict"; +module.exports = require("tls"); - if (sz > 4) - throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff'); +/***/ }), - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; +/***/ 6224: +/***/ ((module) => { - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >>> 24); - i <<= 8; - } +"use strict"; +module.exports = require("tty"); -}; +/***/ }), +/***/ 7310: +/***/ ((module) => { -Writer.prototype.writeNull = function () { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; +"use strict"; +module.exports = require("url"); +/***/ }), -Writer.prototype.writeEnumeration = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Enumeration; +/***/ 3837: +/***/ ((module) => { - return this.writeInt(i, tag); -}; +"use strict"; +module.exports = require("util"); +/***/ }), -Writer.prototype.writeBoolean = function (b, tag) { - if (typeof (b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof (tag) !== 'number') - tag = ASN1.Boolean; +/***/ 9796: +/***/ ((module) => { - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; +"use strict"; +module.exports = require("zlib"); +/***/ }), -Writer.prototype.writeString = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof (s) + ')'); - if (typeof (tag) !== 'number') - tag = ASN1.OctetString; +/***/ 1814: +/***/ ((module) => { - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; } -}; + return obj; +} + +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), -Writer.prototype.writeBuffer = function (buf, tag) { - if (typeof (tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); +/***/ 3286: +/***/ ((module) => { - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; -Writer.prototype.writeStringArray = function (strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); +/***/ }), - var self = this; - strings.forEach(function (s) { - self.writeString(s); - }); -}; +/***/ 3765: +/***/ ((module) => { -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof (tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } +"use strict"; +module.exports = JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}'); - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function (b) { - encodeOctet(bytes, parseInt(b, 10)); - }); +/***/ }), - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function (b) { - self.writeByte(b); - }); -}; +/***/ 2020: +/***/ ((module) => { +"use strict"; +module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]'); -Writer.prototype.writeLength = function (len) { - if (typeof (len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw newInvalidAsn1Error('Length too long (> 4 bytes)'); - } -}; +/***/ }), -Writer.prototype.startSequence = function (tag) { - if (typeof (tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; +/***/ 4147: +/***/ ((module) => { - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; +"use strict"; +module.exports = {"i8":"2.1.2"}; +/***/ }) -Writer.prototype.endSequence = function () { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw newInvalidAsn1Error('Sequence too long'); - } -}; +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +const { readFileSync } = __nccwpck_require__(7147); +const { resolve, basename } = __nccwpck_require__(1017); +const { Octokit } = __nccwpck_require__(1231); +const toolkit = __nccwpck_require__(2186); -Writer.prototype._shift = function (start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); +const handlePullRequest = __nccwpck_require__(1370); +const handlePush = __nccwpck_require__(1659); +const parseTweetFileContent = __nccwpck_require__(5935); +const tweet = __nccwpck_require__(2179); - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; +const VERSION = (__nccwpck_require__(4147)/* .version */ .i8); -Writer.prototype._ensure = function (len) { - assert.ok(len); +console.log(`Running twitter-together version ${VERSION}`); - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; +async function main() { + const state = { + startedAt: new Date().toISOString(), + twitterCredentials: { + appKey: process.env.TWITTER_API_KEY, + appSecret: process.env.TWITTER_API_SECRET_KEY, + accessToken: process.env.TWITTER_ACCESS_TOKEN, + accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET, + }, + }; - var buf = Buffer.alloc(sz); + // Allow for CLI invocation using `--file tweets/test.tweet` + if (process.argv.length > 2 && process.argv[2] === "--file") { + if (!process.argv[3]) throw new Error("No file specified for --file"); + const fileState = { + ...state, + dir: resolve(process.argv[3], "..", ".."), + }; - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; + const payload = readFileSync(resolve(process.argv[3]), "utf8"); + const parsed = parseTweetFileContent(payload, fileState.dir); + console.log("Parsed tweet:", parsed); + console.log(await tweet(fileState, parsed, basename(process.argv[3]))); + return; } -}; - + // If not given file flag, assume GitHub Action + const payload = JSON.parse( + readFileSync(process.env.GITHUB_EVENT_PATH, "utf8") + ); + const ref = process.env.GITHUB_REF; + const sha = process.env.GITHUB_SHA; + const dir = process.env.GITHUB_WORKSPACE; + const githubState = { + ...state, + toolkit, + octokit: new Octokit(), + payload, + ref, + sha, + dir, + }; -// --- Exported API + switch (process.env.GITHUB_EVENT_NAME) { + case "push": + await handlePush(githubState); + break; + case "pull_request": + await handlePullRequest(githubState); + break; + } +} -module.exports = Writer; +main().catch((error) => { + console.error(error); + process.exit(1); +}); +})(); -/***/ }) -/******/ ]); \ No newline at end of file +module.exports = __webpack_exports__; +/******/ })() +; \ No newline at end of file diff --git a/docs/01-create-twitter-app.md b/docs/01-create-twitter-app.md index 0f0dab5f..7330b496 100644 --- a/docs/01-create-twitter-app.md +++ b/docs/01-create-twitter-app.md @@ -1,82 +1,103 @@ [back to README.md](../README.md/#setup) -# Create a twitter app +# Create a Twitter App -You can create a twitter app for your twitter account at https://developer.twitter.com/en/apps. +Head to to begin the process of creating a Twitter app. -[![](twitter-01-create-an-app.png)](https://developer.twitter.com/en/apps) - -If you haven’t yet, you will be asked to apply for a Twitter developer account. See my answers below for reference. If you’ve done that before, skip the next section and continue at [Create an app](#create-an-app). +If you haven’t yet, you will be asked to apply for a Twitter developer account. +If you’ve done that before, skip the next section and continue at [Create an app](#create-an-app). ## Apply for a developer account -You might be asked to add a phone number to your twitter account before proceeding. If the phone number is used in another account, it won’t let you use it again. But you can remove the phone number from the other account. You can change it back once your developer account was approved. +You might be asked to add a phone number to your Twitter account before proceeding. +If the phone number is used in another account, it won’t let you use it again +But you can remove the phone number from the other account. +You can change it back once your developer account was approved. -Your twitter account will also need to be associated with an email address. If it isn't yet, set the email address in your twitter account [email settings](https://twitter.com/settings/email). +Your Twitter account will also need to be associated with an email address. +If it isn't yet, set the email address in your Twitter account [email settings](https://twitter.com/settings/email). -![](twitter-02-sign-up-for-developer-account.png) +During the account creation, Twitter tends to ask about what you'll be doing with the developer account. +If you aren't sure what to answer, here are our recommend answers: -### What is your primary reason for using Twitter developer tools? +- What's your use case? Select "Making a bot". +- Will you make Twitter content or derived information available to a government entity or a government affiliated entity? Select "No". -When in doubt, select: Hobbyist -> Making a bot +Once you've submitted the form, you will receive an email to verify your developer account. +After that you can head back to to begin creating your app. -### Describe in your own words what you are building +--- -#### 1. In your words +## Create an App -This app will be used to publish tweets using the [twitter-together](https://github.com/twitter-together/action/) GitHub Action. It allows to use a GitHub repository and pull request reviews as a workflow to collaboratively tweet from a shared twitter account. +### Project creation -#### 2. Are you planning to analyze Twitter data? +Before we create the app itself, we need to create a project that will house the app. +If you've already got a project in your developer account that you want to use, skip this step. +Head to or click "Create Project" on your dashboard. -No +#### Project name -#### 3. Will your app use Tweet, Retweet, like, follow, or Direct Message functionality? +You can provide any name you want for your project here. +We recommend keeping the name related to Twitter, Together, to avoid future confusion. -Yes. This app will be used to publish tweets for this account. It might be used for retweeting in future. There are no plans for liking. +#### Project use case -#### 4. Do you plan to display Tweets or aggregate data about Twitter content outside of Twitter? +If unsure, select "Making a bot" for the project use case. -No twitter data will be displayed. The `twitter-together` GitHub action shows a preview of the tweet before it is published and becomes twitter data. +#### Project description -### Will your product, service, or analysis make Twitter content or derived information available to a government entity? +You can provide any description you want for your project here. +If you're creating this project for Twitter, Together only, you could use: -No +> Collaboratively tweet using GitHub’s pull request review process by utilizing the twitter-together GitHub Action. ---- +### App creation -You will receive an email to verify your developer account. After that you can create an app at https://developer.twitter.com/en/portal/apps/new. +With the project created, we can now create the app itself. +If you've gone through the project creation flow immediately before, Twitter may automatically take you to the app creation flow. +If not, head back to your [dashboard](https://developer.twitter.com/en/portal/projects-and-apps) and look for a "Add App" button under your project. -## Create an app +#### App environment -![](twitter-03-create-app.png) +Depending on your level of access to the Twitter API, the app creation flow may or may not ask you for this step. -Only 4 questions are required. Here are my answers for reference +If you are asked for the app environment, select the environment the best suites how you'll be using Twitter, Together. -### App name (required) +#### App name -`-twitter-together`, e.g. `probot-twitter-together` +Twitter app names are globally unique, so you'll want to provide a name here that makes sense in the context of your Twitter account or intended usage. +We recommend going for `-twitter-together`, e.g. `probot-twitter-together`. -### Application description (required) +Once you've provided the app name, Twitter will present you with credentials for your app. +Note down the "API Key" and "API Secret" as we'll need them later. -Collaboratively tweet using GitHub’s pull request review process by utilizing the twitter-together GitHub Action. +#### App settings -### Website URL (required) +With your app created, head to the settings for the app as we'll need to ensure it has write access as well as the default read access. +Twitter seems to change this UI far too often, but as of writing, to enable write access you'll need to configure "User authentication settings". -https://github.com/twitter-together/action +Press "Set up" under the "User authentication settings" section. Select "Read and write" under "App permissions" and "Web App, Automated App or Bot" under "Type of App". -### Tell us how this app will be used (required) +Now we'll need to configure a fake OAuth 2.0 flow (which we won't use): -This app will be used to create tweets that have previously been reviewed and accepted on our GitHub repository. It allows everyone to submit a tweet draft that we can discuss prior publishing. +- App info -> Callback URI: http://localhost +- App info -> Website URL: https://github.com/twitter-together/action -## Save credentials +With those all set, press "Save" and confirm that you are happy to change the permissions for your app. +Disregard the client ID and secret presented, as we won't actually be using OAuth. -"read and write" permissions are required. When you have created your app, open `app settings` and set app permissions to "Read & Write". If you change the permission you must re-generate tokens for the change to take effect. +### Save credentials -Open your app’s "Keys and tokens" tab. In the "Access token & access token secret" section, press the "Create" button. After that you will see all four credentials required for `twitter-together`. +Head back to your app settings, and jump into the "Keys and tokens" tab. -![](twitter-04-keys-and-tokens.png) +If you forgot to note down the API Key/Secret earlier, no worries! +Press "Regenerate" next to "API Key and Secret" and Twitter will give you a new pair. -Now save the credentials into your repository’s "Secrets" settings as follows +We'll also want to press "Regenerate" next to the "Access Token and Secret" as we need to update the permissions it has to be both read and write. +Note down the token and token secret Twitter gives you. + +Now save the credentials into your repository’s "Secrets" settings as follows: | Twitter Credential name | GitHub Secret name | | ----------------------- | ----------------------------- | @@ -85,8 +106,10 @@ Now save the credentials into your repository’s "Secrets" settings as follows | Access token | `TWITTER_ACCESS_TOKEN` | | Access token secret | `TWITTER_ACCESS_TOKEN_SECRET` | -![](twitter-05-repository-secrets.png) +![](twitter-01-repository-secrets.png) --- -next: [Create a `.github/workflows/twitter-together.yml` file](02-create-twitter-together-workflow.md) +You're all set! :tada: + +Next: [Create a `.github/workflows/twitter-together.yml` file](02-create-twitter-together-workflow.md) diff --git a/docs/02-create-twitter-together-workflow.md b/docs/02-create-twitter-together-workflow.md index 6c71e331..5bf5662e 100644 --- a/docs/02-create-twitter-together-workflow.md +++ b/docs/02-create-twitter-together-workflow.md @@ -51,6 +51,4 @@ To create the file, press the Start commit button. You can optionally Nearly done! Shortly after creating or updating `.github/workflows/twitter-together.yml` in your repository’s default branch, a pull request will be created with further instructions. -If you like to create tweets including polls, you will have to [apply for access to the Twitter Ads API](03-apply-for-access-to-the-twitter-ads-api.md). - [back to README.md](../README.md/#setup) diff --git a/docs/03-apply-for-access-to-the-twitter-ads-api.md b/docs/03-apply-for-access-to-the-twitter-ads-api.md deleted file mode 100644 index 3da32e46..00000000 --- a/docs/03-apply-for-access-to-the-twitter-ads-api.md +++ /dev/null @@ -1,139 +0,0 @@ -[back to README.md](../README.md/#setup) - -# Fill out the Ads API Application Form - -![](adds-api-application-form-01.png) - -Fill out the form at https://developer.twitter.com/en/docs/ads/general/overview/adsapi-application. - -If you do not receive a response within 7 business days, contact `adsapi-program@twitter.com` with the ID of your app. - -Here are some anwsers to the option that I usually default to - -### `#Business` - -#### Of the following, which best describes your business?\* - -- ( ) Advertiser -- ( ) Agency -- ( ) Data provider -- (x) Technology platform - -#### How will you use the Ads API?\* - -- [ ] Campaign management (Creating/editing Campaigns and/or line items, bid/budget adjustments, objective and targeting) -- [x] Creatives (uploading images, videos, and/or creating cards and tweets) -- [ ] Tailored Audiences (uploading 1st or 3rd party data) -- [ ] Analytics (Pulling metrics and other data for reporting) - -#### In 280 characters or less... - -...tell us about your business\* - -> Independent Open Source project - -...what do you plan to build on the Ads API?\* - -> Create polls - -...describe your unique differentiators in the Ad Tech ecosystem\* - -> We are utilizing https://github.com/twitter-together/action to collaborate on tweets with our community - -#### Do you have API partnerships on any other platforms? - -- [ ] Amazon -- [ ] Facebook -- [ ] Instagram -- [ ] LinkedIn -- [ ] Pinterest -- [ ] Snapchat -- [ ] Other - -### `#Clients` - -#### Where are your customers based? Please indicate your top market\* - -United States - -#### Which industries are most common among your customers?\* - -- Media & Entertainment -- Education -- Tech B2C - -#### Tell us more about your strategic customers/advertisers\* - -> The app is for self-use only. There are not strategic customers/advertisers. - -### `#Product` - -#### Of the following campaign objectives, where is your offering strongest?\* - -- not applicable - -#### How is your product distributed?\* - -- [ ] SaaS -- [ ] Managed service -- [ ] Channel partnerships -- [ ] OEM/White label -- [x] Internal business system - -#### List the languages that your product supports\* - -> Any language - -#### Does your product currently use or plan to ultilize any other Twitter APIs?\* - -- ( ) Yes -- (x) No - -#### Do you license data from Twitter's Data APIs?\* - -- ( ) Yes -- (x) No - -# After your twitter app was approved - -You need to get your account id. Open [ads.twitter.com](https://ads.twitter.com), press on "Go to Twitter Ads", then the part the 2nd segment of the URL path. For example if the new URL is - -``` -https://ads.twitter.com/onboarding/18ce551qf6o/welcome?onboarding=true -``` - -your twitter account id is `18ce551qf6o`. Now set `TWITTER_ACCOUNT_ID` in your `twitter-together.yml` file. - -```yml -on: [push, pull_request] -name: Twitter, together! -jobs: - preview: - name: Preview - runs-on: ubuntu-latest - if: github.event_name == 'pull_request' - steps: - - uses: twitter-together/action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - tweet: - name: Tweet - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - name: checkout main - uses: actions/checkout@v3 - - name: Tweet - uses: twitter-together/action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} - TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} - TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }} - TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }} - TWITTER_ACCOUNT_ID: 18ce551qf6o -``` - ---- - -[back to README.md](../README.md/#setup) diff --git a/docs/adds-api-application-form-01.png b/docs/adds-api-application-form-01.png deleted file mode 100644 index 3fa629b5f068af7ff5b1ed1f5236222c52788036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379230 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

h@>5ltBZggMPoySMCRI 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

1U`;V?1UQta8 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%0A~7ioBatBNLFJaW%nOE3^yM+ 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

9de9jIvdI-)d1y8~C*3KS8V~@nc$;!F-ueu26~i zlR}?fsuiEs>AWR3v&i2j^(FiPV|tu$yKIevGq7aynxpRsJ7#%Xh07K5O&|}Q=Ec>I zfj8}~`-_>E96EuS#UL(LXJ?e*dUu7U9In8E7$8i_1Ot zrNU@uK#&rK_J?QNMLSMpn~60rbTs~$xK3$i2{YqPV>sQhw zV?pKQ;P4mvH%UsD9aq@|0j$TzN!kNM&*AIY+tk&ZL(s@$ftUpO&)xmS85j9aM!whU zeG{C#;Cm&^>#Odqv?PmKXe5|#IX%n>i^ti3en>snGtxVo8=TWHF@fR4UEl8Exd7dO z6+bEGc=QW8ro!Pk#lMA}+-ki8Z=0-50mjQPG52^R$TnnY~x13AemY>3dD@4EIJJHDxM|yfObm*X}G56>b(|0 zFr1l)#yc?GyiI(zKZ>HI?ikbx$|7nmK@9lbyG_t2wKY(Bf0Wp-|K~Fyb+Ot*1l=xU zKKp5s`b3HVccPa|sv^7-jDw>Ohl0`ROFuiHyqh1zLWnH8CXOBuNSzj9X!8##G54wU z{jxKY7(sB1ZRYJI?LO2}TJ{>vO1C{3f~?A_)8O$rih@XI5(V6nzYkiU^xx{$yc{lv zK$y6gghJV`khxFoZ4zFckbFZ6QEFXYJljsrm(fZI7;IWO_)TVvgy4SdLiBM`DNG66 z#+t4kL_@I`?O<|P>~31rxTK8lc0Hg1RAl_Gg1uMim6wC*OGYyZQiSg1Pqt?#%@fkn z(uh4KDK@6csNoruj*G681O!T67reG>ZJTy&W>x9wZC=L7uG$sNo%*f54c#l==qMSb zrD!ScXS{cJ*D0P|XH}DnZ@Un8otxcG3~OEHRLKW_w)V$0>o430<#)Z|B+&6VrT|!a zfSzkyoRaC7fq}j*_9GDs3k;*%Grnw@xO|eK?UDvU6-`#s0Bn`5e!&F~gsECnJow;D zrqy3NM z43#(KNqkUVerr-o;3v`h^+%e=H|O(-2jJvWWq5p4{@%{Nv>589Lo`S^|G-#h7{hrw z>tfk2Y=+m#6*bc?zn=q#)Uy3Drl!!L;i3aLZrTc+?Z3&N&R%bMctSFYA#v1Os;9

}haFX?<7H3lwq2crZ5e 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 AB>(^b diff --git a/docs/twitter-01-create-an-app.png b/docs/twitter-01-create-an-app.png deleted file mode 100644 index 94608933f4a4c564cb2936fdb1b7f15b472e09bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228085 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 OEsHlM^46))<~SEH6sT;*=GXC)y&u0eT6 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≥zh#b}3hTbFqGXvdQg$<3+<-llO#diCG=ZY?mGh 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 Yf!+~@Mu~;sU$k~^bJ?1;`RIlJ2Q}ugmH+?% diff --git a/docs/twitter-05-repository-secrets.png b/docs/twitter-01-repository-secrets.png similarity index 100% rename from docs/twitter-05-repository-secrets.png rename to docs/twitter-01-repository-secrets.png diff --git a/docs/twitter-02-sign-up-for-developer-account.png b/docs/twitter-02-sign-up-for-developer-account.png deleted file mode 100644 index 3c8024e7605b6e30c12333136af00fa8546ed847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292264 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

fo8+}$#B z0cIifY&&TCr1oj@l)MQxP!>D}NCQwN%SB2(Bm`Fz z-cC-Xmf6enQu*HcQ;elf$Q2lI`dDSS6%zN3WZsh-zwX51#_PZ{84A^!EWoT$VXI;_ z`CQ<8cM#H=2qBD}>@Po7v;H-U@SgE@Yv39Q1ckuTBBY;31zO?v{_^H6qAWb(^gI66 zzV{>sM;IwnF;{?Myoq9I7QZ-bs|Wl72DT!QTk@?cPo3f0y_$-Gq^cVlbJ|QY!-RP9 zoMD%ZY?IUJz!r2eySzo`OU7u@wc1^iwXpU??6s|NV-HYVJ$8)UFna{Ft#Y5 zHk5E7-M}PFz|oKm^Ud?QHO58bum`teDw}4Bn&|DhMDe({@sq%1F&OsxbIKLbAyxCs z@;H)y#y%%(mOOB3TQr@4m>HKkg|#G)-~+}ea=5W!&m}@4C%PJw9Gv=}-uwGsX|&601Qs1OCF%1{ z-goG@>OFO9Ra)2JlqX_C&Xe;mDGm&lykd4wQBE>i@(E|Wq&IG`Bu<`UhUCIg_FqP9 z-Bsop&UP78S>w^65-BMcsj$tbjXjtIyw@|oR+XV?j8)Y<6{kHCYO;X;XIrBUU9|BH zA&+#_ZGz@#fEr3i$s~z#6wlcS)s$Y%-00lazyZe~Y&kTKKr>)aG8Q|-G^u&)Mz_S9 zbkNOCc1sEp+5XqTaJm@RP+vkkk-f~baVaYMfVtm4`5b7RB*URp*Ag?3oUBRh6#^V?RHiZcgg+fPfkiop4K+-4g1W+vi(Xma5k!L9 z!n&fDu5}Cn+tEvR1x7y=1uCY}8oJu=E^$3nD>UnG!t|*O(}W&*>eDvvnj6@u^foU& zkd_wwwN$$^BX#3&`+J!SjIm;4j$q9>b~NID2vOMdw!^6;20do23g*2OYR=p&RIAC_ z$;ueJm73?A3hjFO)}d%a7}@)NS~eXscM5A35>P|CeXOnd@qBa}bkUo(uvYG}S$Mc$ zw#;ki_6?(0N2PLNcB8u)hc#W|2}L_Kgd)ki@q=IvB@_$H8}Y@Tnwxt9RZ-*~4@t(o zL|FzYNs~@AhtP{~;Jvcl)y|}-*zgz~C^0upDbQ^Pybah1+xZWM_V*VMC4P3an1*ZR z#Y`UQ{OND!$Ht7e7f(3>fISV;tK{-jcc%E{+-qdGcERbKr>tysR@`&Y!5u}Te~Ftk zZj7Oegn=)F6{YXqXi_Oa8+qC}+1!BjwTd{)2$8luO)is*b`x2@`CQeddP+#F=paQF zOA#xou|I!Z_o|&-kAYyB&~mPh~zL<`l#USQyoDl!`WZTMd1M$HODMr za+4`Xkz7c!<2B*h@B@Pq3DGt2kF}Kc1l2LM-8<4+ht&sxGQ)u-72gOXDT{$M1Y`p6 z@^y#r=Hm;1v!M?U(E6u*H%NQ-2rQ96TlU2N8L6+RW1^sDgT9NlML#iD{+z)as*=W? zqc(RR&D3%ES6{=0ToDJt2E&e4O}PoU;xAk|Vzjp`L#sc@Q3-K`Ss1v+WyiZz7*`l9 z-A=;p8e-&5`cYi|>Bm3GUeKv`7&wqyzT;uNatwvs8#4^|g~>)fg=bN}CB4~fK)dK= zPEewBqdBZb_3|HRjs0qgywHC>r8VOn!JE>*A)WixR1sl3kJxDhLEC>cC%`PB<^Cs? z!d0@HR0?4pS!+sX63f0Y>yTLf-iLK_xq^o3CdSIrQ$zp3_Oa_w2(m=>T~J-ji$t!* zy!)lGoVAOC+!uJsh3QC>a`a@TuH!&o%T4_2kyeX(w@ZjA0etSE4gZT=^%kM;B*s-F z_##bwM|hieoflbZbTyF3h%b91bi#_agnigFVB>APL4^2CrRone(f*_s^ zI(K=&I1#A;;NCa5l_^jX?m${>K58sM$Kv@yHWZmgs__D5=?vC~(&;u}QZX#(&!n71 z11EoJS!mp@zY)X!{oQQlZWdsoCtO?_-x9NkU#HN9k&F*{dY@WD=Gxebp%ZLx&`pY0 zLbywKBHhHZAQAEIZrG@Qy4L-_-%otUFBK2MXCJBFpqLnvR#j*EMf*+Luqb64BdPM7 z!qN$a@Zw(PC3t$$^V(=^!FICTj@*ikeIVyGg?r4A=V4Cg=QDSr(TYlJN^HM>5N8-> zDkwpR7EFvdl@OYTf$+Z1XS*f>|9EsOr3Tso);{2xUlX`u`!kcn40buzH}o-91S{XB z{c^yr#wAH@v~!lAdyrs!k+`P(!)Sc`qMQpJibn?@;0b}{5qS4Pi9mrdE1tk5WBJf z=>l1IsjOM>)M)D-H-Fz5x89o*N%EUk7(_PLbzGfo3ff}?&i6+O*t~G)GPLo|_Nfni zDtc0hu*HSdz5_-H!1+6+cM=nvPuRaexaI6nvEHh{H^lOks);`{N7)7L@xhAM)eid6 zZ)vL&*~20IAs6nD5OWcmynjllW6bL2ni6H^ND`;win8Q8S;R&m`77*lUq^*#*AHwEN^>p4QR<+PxFP=P+@)f<+*}Z02_N~4}$SIHAF##GgkqG;9 zCwg$t7fsraL>3@HFFIQToaFzLljAt&NH?u$H+|4I_n4{gG+rZmBVsCWYTy6d;Jdc) z;I2bxa2{Ptg8Ysi7&HRvMUzly9)Y~%(6`a(!0%)1YfyaPO_UHvVtsVfA7r(Mu>x-Z zYB20rFj1$wM+V8}!?j)lrvk$ROq{di+1?Vsx|q*S>(Oh4XBbecT>~P60?p!d551ovCd_}D-=IFe?px)`)JM4X`M@ckJ{Fi9hrJA> zl(0vMy@zD-WcD2fQGvzHs8^4!FY!ZlOq^ONGe6O3Aqv;t+Mv%bgLEzQXwTHyiXCwl zxI`_ApZ)1qzXk0h!B3WU)SF*A&tCq@Rl8N8wQrwM_3+cYgO`ifErjKdKONO4WS`%Y8xS$13kG4asI~B~0CdnoRQix5h1^ z07l;<3zc5Z2R5@(fS(K?v}`f5^NLyqDPN8+A-!kdR!O+s%5rYJ^T?$;l$MF~G(J=C zUouw>=yHlJrguJJi`N7I@qnI1^7xoz4wUlD*}FYOJk`0@&eB{ z4Ki@^1u>6z61_g)5t=($7(uuf=W+i!=q!0smbsZbgNIN?D=oNV7-P-quBWc=Oi|e~ zGBD_Ir2Yso_;ZIvGMiKhlkB&-Gb6NT)y6l!t(MVR0R@TLm)PIVlr8G`u$)-?9Q<)= zLCy0D>|^krIlsBuwn&@W8S6y)kxQ6)yh2)9{D_St(NBTL#F`kA?3Ef9KfBF6+sn|J zK_@8<3bka6)x&B^5h?mfxZw+ym+4`Q62+{&m8Tb}-pVORux|f#obz3Yq8Z0arxb=APa^=;OF{O7vC$tFOx2?dssWy9oC^LQEc;G`}0X_F^oX#8#s~W;8uND$bxr zbycR%WxbOKz4=%VIT7g;GH$$dD+zm${4+=-D(6S!@Zp@>v(A)tJf+E$Spt6Vhh{@@ z67F!RFy`a?&yB1e+)vKHgH=2kZDYShvv?OyEIV>s=ec%2uz%8@Fg&nTj^{2FqtE zegb;p1T757{H&&J?x>}dzYB8pF)rWMCc=C<3^YQ5sjUW9?Z}x*GTcaBCbcv8&Y9QD z7er6Gw!Z0*pl#;u!ZW0FRR>#p)M#V9sBuR;XeQ|1xgUP2?k{IG#$M#%R8E?#6nt6P z-X(~QfaXRhMHuzH;r95N!@xrUHep4PUYHI*eG=bl(q>8I%%z!7Ly6~Ys2f4(=za*? zG;RTY8DxELo~FjVGhJF4J8CdRi;NxDqJ=J>18#m3(*cT+=frDF?&gb`y(FVD?+QIV zcB~dW!mKmgSX5a$dcRlv<6-B;I7?f*Lw*{REU0V}?_1p2OOA7&i;W1EE-&l^@0_72 z{j@8=e&f4GXF(KNcjV;X-olqAUWQyqf6762z3_H5RFV!y^GkYP?o85?=`!dDO}nUF zXmV)t?>=AwK@Mr=jVo)Q+KUOH-N}|?dq_@+-gMS`JsE+!akE=?bvS>cbKsXgz>Vw= zB1l10z_kVD0}07k{lTn*6;Uw18%&z)x-d<~av19q?k>x!s}XXMoIT)rei|ruspiHf zPCMzCGsRlhH_(MJbc~b^jlp1D0tSPO7P5sq*{?m(a z0aLsZZh4BRW6Cs+IAkg_=`-rR4b_{5AXf%{Pl@o*)!wPG4Pu?HFXM6ocXSm_D?Y%R z2$7m~Qh!Hpxi;fF@}YdyuPg>|E`sv8N@5FC5m^j# z(EBEgUnY;!kf2aBvJgUglA9RkcAP!Dpm^+|^pqviika<)^LTG>3OaP5Sy(cJO_5e_ zE@MZYs&jJD#D=(4^66{N3m<%5rG_yGcz?~sDjFkv+mh)A;Ux+9H$nzhSk#+GjJEml ziTG3@lN&;kq71LNaZp3M`@qeW{5Du*P>GcOh<6@J0-FF74uH)$V{9*Ix?i##QH_F} z)$uOpfLZPXyO`-Ymbj2hY?0|noW&1G=?4w7GI!Dk6V_Wsh0WO-uFID3+YXbb+_*A0 z6v%S89gS=FjJ`V1EyuuUR$S1X?J`84n2|=8dVg5k zT6A<$1S~fiBE&o0f2V_uoy15Efu(qFw6O4~nS8*1u^M!enF#mgl|qz=}Lz@IBG zRkG$A6`eQll4h85?wr*&AGGpt6^imyS_AW08-E3vR?5BYpjvL>y5@=>S2HjN!vxw| zswQKlCEERBbV-kPhAvA7A5J#Qt7kCLq4%C?<=2i6O#W9#_sAMLlM2>DFvv2WTl=6* zZY;sc;>l9VT*udGaWMtevNq?Fe7Ol63gec?URMk>ACHnP?EW5v_BSR+qK z{Z1@fZ(c6l{xC@~)`U&+TEzS(p3Nj>>%XonT$rI~{4fGfvH^gerpZ`EB37&yGvlF6 zsxO9;d3Umoax5{ncXORm)tg24bKodfv1iumcz$0JuX?88{n^_{gBpL8;5B&zKpD#7 z+pbo|HOrfnU%Q7QFC93ET!uYgvvYQ~Ar6Ve^b|>K`dptYIFrcL#MT?+dXc}F$Rfzh zng4o_Z1!U%oi$|S`}-F)o@Ra{1`aBErg2Qo8%(;Ngnu~A#!*GSMzHM;+i96HiOo9S z@CcDn_2D3D(hxS@l*!oBA@5D~_zn)UOZSnoehga4Xtx?LjbjKUIvBv4tuySJh2Yi^AG8LpIJe6Fvq_vWx9?&%-=(2Y|1-7)+1`^ zlpIUVkgc?x&oUIIpq89bT^&xUt!zytpTe9`c;5bJ`3CiXVOuUqK??FMmYSyyUvnJ6-w2yy3H{Zsb$C3#}?(e|M{R=zDB}m#NX7^5Q7QE{6 zjO7*j;j!gwKe}jT%xqnAsu;c`sDaqW3!S02G~+RU`jFnwh~6)$#hNCXc+)2D5=+0XA^ z?(uL$!FrlJ7WTGje!3Ite?MCCj#D@KupPwnHx`<(Ny(m*{bx4EZltCOcfF5dy-3DJ z=1H)+HUzy@uL=8RWxctq+$0pG1JjM|8q;eVn75X0vJc-lG4Sjcl%dMmJ)boR&ru-| z@FU8gIvO2@R-8iAAbat>yIxx+U{r(U^PdS(H`YN0kDPcnKkt?opEG=d54Pl-;5 zWW!ponO`E>7s&e&gzHwGHG!8l7{6yeYFx}fb`ldN>Bjc=CM{dl^m4U=l33sHex$Sy zpifpnBI@W+*w2D=e|=Fz?DPv@#a596p;WP8djZDEL_wZKyM;nW{^?Cw)Ufs2TW#TZ zYYK;?j#iYD^oOzu(XqW}9PYK>yQ6zs6AU-A-W)4l3I->w z_pfN@o7ciwH?C2wDKoiKA7N&17LoAkKM3Cw3_($$GChUdi9qOW9bsD}BltOe-g1I4 z4ZmgWNG{%h6YMOr3YLUPBU@u}@2cHnHco&wpl?MVW#p7Ztafd?**>@x%g#EChhW&O zm>O5t*|Al|HJFPv5c{~@8#PdjbsgaOvEfuAJqe!+Z|~-VHD*OW8no?<`-EFdd4*`> zJu|7efD;?3h9kVrcIiRVu}9k%O%pm|Va37lH&gsk!2yrfM=p*e)YI2rPa*TTh<+`Y z)V1sWP*KlpUCN={3`1%`CU3<+shle#oJ2Gr13F zlN3+(9<9OW_Y@v|!0ttM`i~*5LBG}?-Q22wlr<4DMHDHML%@E%H54U=pcFikIOUM< zv|2|#D;bv>M<2dZI3ss_1b3~5$7AVkkb%rJ>C*;lAD(#OmqO;3UhdaMlM;FMgLa$6 zMMgc*NS=dEBO*Mk#l-rkIh8zgc1vAHU9buSA`dmL{LOD3W*3jX_-W}LxB%|^wU$P( zDFqU{v!m2O%Y{>=SW7gb6|^Qd{hC-{vmjv4`3D$o^BLqoxE#f8% z4vbCm14 z$kb~6gA;JSy@0!(1+Fxez!hRphay!4I3wO+YSeT(Frob&FcClP9ByqXIM{cUw_gXi zs$|eh`gq*e=bZRUjJ98!L=D+JGFJ7*>nfQBx;H*&CokhmCRjcJkmRKZENjpr)AY8h zuz`B1=7AWl_gk0g;C^OfD*4fqN}ODMsn=a;hm@HFMB1S##7l~bJHW?rmnYNM^>!J$ zl@k4w6+ua<0N}(Q@C;G!C06<(*l7p;75>vtmxdA&&jej|<$Fj*S;I~mwQ`t4hM*i9 z=JCF-18Y*v>4mBo>IzyFkSE$OTh^cgzQ84yiX0%q{x?rro4M7o1n8{At)JXEO$T-q zZ^|S;)yF=&sc{Q>B|C{04(}Y2xP6D(Hs!s*$vOxB@O;FdIGIwu=(!(RG}Oippdsav z>$55~FO2Crf7#(`uf&pAdA&2;TxV}H(oLL2VSVrzx-40_w^Hcj6ZHUb(!aGps=`?D zsSZvgjMmV0yJYIxP?}@$-Yji#XIZV`y=tD-p;+>f8v{|Ovh-L|QZ~u}Na*OPiyC|L zS(N)*@8>##uKieM4D>s^gr+s^Xe7&0NjyxAH5nt}l^lF@r@pj&bQQue`a+VBZO_XV zSr+4cegK{%w=}~~ieJ38Qr&6so`3+-l(sk{`|k`wEgWimyk)wH4FRHa9#{gLS8C zXqPq-cJT?!AUirjLUPyc;M8Yw(i(yWhSx&QZzLFBykoDh#jr=-NjzptwPLJ zcDXGaL%*ym96uj0!*wVJ z)l!Il-mA4th=c#rpn;AxM?!Jqp-&KXsx*!Bve_C*dw6612VS;Nqw4rcF-Eb`%{Prf zhd%yiuV}s8@9KiffBK^MA2_qy{ef;*eMhMHHvoO=z&}_8x2Q~xw9LxI0&l>f6SQqI)9M)wL4<%6COb2} z$jw}_K~Ob8Mu6)d<2>a^zUz}PuZ+W%+1w(z%o;sPp=iXvq2|gn;np;EDrV_mKkGD; z-%BWl@N7_6eXwqPJur;czYtGqN6@Zo5H|W8l*qDcui+u)Y&W;0E5H3wVo`%Mu}Jn+ zScUe4*n;7xe(fp$f?9RdBn!rhEys8!d*eAYFdLf2t!GNRZX;WOV712EI{tKCMo)oxGZCtRYFd`2LoeehBpv2@YH z`HbP1|D?t^n}Vd|mNS!OT#}nsjH4fSaF5MiF(Cdt&>6?N8XXE}LJJzG1;>Pp$s5|6 zGTL?E#@6VOk#A76#YF%gE55296Dv;HQ)>M(T+woURCWJ2N5WQ>=`6h@tvnX9`fRor zG7Ds#H>U?@>+b8uARy;njc)UlCznn5tb>kOVI(N=gS+443sw_MZ|*X!WGl0$kl-MO z>Z)-KF%W_lzL)#ku3Q{zINM{%D-GEPuCRG&XY10&!VX{V_m|@aDCiEZ6&QR40jIX zhez1QnT+A_-piO}VESf=sFRC~4bk@4<`=BYcL+K35j>pJ+85e+QgB*{a4g=`_$UYD>a&>_d5felK9wwsd2^LZZSyq^v9N%~AIGYr~pDybP&kIzXK znm#2~r&unM1v2RMQL9kn*9PYrb@;rxqwnW$&R9`4*)NMCC_V-Kf5W2kxT{8!qxMka zaHaj3NY7ABQoJl!DD0VTb=Mm__MuOG=2i&FD*j6rbC>+B=(rUJB1;om1%U&tEt7 zLqG{uW`n&VeE)gOPx?5cPr}FC)$32Uxx`8(^9(UMM%kt}?DR#do1xJs9i0qE0}DKF z#9B=+!t8Me#$uO`M%tBu!~%k?(4fEevd0Nx1Nb{RplsnT$g(%QYU1&=xSq|(%;r-cZ0kK zk}ak6n2imWCD2^~54t5IkkFS;U9b^mJr8pnAPHo2BFOmIi<7lU8|ke!?w7g*OUKfC z{(${6xVR!LXLg;uqrPh8D6sE=SR28{F;+8O*^maxrL z1S<{>o=v0OMcpHbT_$C5tVZgAx|sn4jIQR}T|6}#?Ux(6RdB|SKXRM%4S;zEyT9HB z_EO{Hzbx-HsMG)_OV3EFEN8ua195_E&BcnB0lP}lFLvjY$PVfxG&%DJ9(Kblm)=i= z&uF_GzA@Pwjh@{KD_kgkKUV3{QBVX+Q-%zOC}u?mZ4Al!uv@plpBZnJ7?HO zZ4bs$xs#v%1e^OkXy+>rZW5Sn_4llYghyYq5c-BcEH$~|dvYYdxYNb;$ng7sDV998 z!2z+f7Xb@w@_h5w2@FDxzSTR2CPjA7w@#O*#uQm#C5r1>lraeJC(WrM)qG7+EuU5> zOqZ{e3Q`~KiHDPWLL@>PKkXpaC7lz_uGR?!h*RvtLSUefhkd=1K7(sTG+IV{w5ZuO zG^AZJOv@4k0~W9^6%tV^o)vjvN{rheAF*p2_6*h@K}x@!V`DpdFGjRKua|ebS?)|6 z_bShJI%z*Y=5;`r^{b61*?Ea}aADj0-NYN@%%eKYxFRKM(earGUln=l{H`g+P_nb>5Rigu^v6A(nR{)w~h zCz>4=njId=s-TF!JmMd5M3CB80@^&{y+{@-T{Gn76Jb|d6E6l|Ixn`^3xYZ;x&49#ONcw0Y4D=|s{ee z%>RX>&KuRl67qOq-oFgWydu$WxaZ`xm4bYmZUKK+E=ckI=8R&+Ize9gCN>r+r+!s39 zGUTyNuW)}4=oGg_>6{F<_S^9mI*$g_`IxT{1Nz=@`jOt z0Tsx9>HuI0le`Iai4%-qXSb0D4h(ovnn$R>fn#YAV5RRNy8~C>2aSHY;_=n-OQpy? zfhj}0&|E|9pNMhS@QG=T#T80046U6Coc z({ACq!K}J1k(o?wR7SEnHy$?_YjH{Lv*1<}P=@Gl<^8Xe!~&hN(D%k=+4?y3^mvXuP?qu){nF@oxUHNHSgvbBq#WnsLo;6 z`3EPR3NYzIdj(}|`!mWv-gcXwLjEUX1t(Oyxwgw(_^*Fj@pQIt!W|Qh&;~Uo+^UlT0rdV0)qKsiVr>;ZxoMXp0xN6UPs zd<$}r{4;Tg7@#4Z@CL)WT=42L>^-+!^y}C;tf4)YBTV+Zo6?a;75&n(9qIF>^5xa< zN=iB{4<-*FA+(cW0zw}c!10&2YLo_2~qe5P>8`(BJ2)RmrEu$Ja2Wk8ft__V7 zT=GZElCFUFJ?DpHYF=Jp$UG)GGU&0qP8^YV!Aps}B<9fB{uIa}doN56<&MJ6Pr8{0 z7L)x=Q52c{CyL@9L;>`Ah8LUdRJsk8-tzAUGn@%J&NKgKj75?X`wzxLq1P5v-Sp^3 zJzxSyyWfBP{}b}!y-vni2rtjfO@BUimzUoDA%Tt66@IA8BeY)twL@_ve5lTr>>Lb6 zeaMYAW$g_4SixF$rsSob@0Ov*2s_!?Ya<*`pAb^^ z(0ftDc!?^2bw7*nJLNO2OBBeccjRN)p4qX_YCSiYR!Z=`i&K$UdJWY)WDzQ-zWO5O z|~Oa!!hjx9z%Vzc*8SzE;(Q>haZy5wNa$Nj_XG-wCULnhXty5c89|662m4 z;3)SCX_Bb{#b8LsAT>aOfAi#FbCXKs9EFM^!)>uUK!P`ClUDs&b=g5 zkyYt}uDhtIq^V~rR0j(WR5^eQb=Cq}KSUi)o)X-qDLpAGU7PSSLk+bdJSHx7z`iy7 zHaP0TJFj`I8|QO#tLWm2^PI3_hFxne+8J zutZ~W-bQ$YS*#K66EthHde>RA%T!^7iaVXba#Orqw<)6cS$9OURYtO^QPRT~yy7O#`*1x;SV^v7VUPChByT~T5) zckAFM`-!#Ook6)h!F=d^@*ykuvhLImr82+CFa%Nu<%p|x|J66bRpaiUp?j%rXG7AU zwG2=|#p2wyvuhM3z1+)u1mNWgfuNfwHb914}VZ7NI<)H%H8 zZ|9{Q ze;9Gz5Z;q;VKG_)F;VpF6 z*rO7EXY6Sh^2uATDmlUOdL7OiS}?0Yl>w(NDFK~E;}e(U5P1QfO4#Zj5rX59YIhM0 zdbanNv2$O#8p+m7QUtPm*c;_B<~bSm0BhSNwQ&0GiaetNGUI~rQL_c!EC}SyPr2y0 zfa7e>#;!I1!hV*^ZRFn+rS_b7Ru&(lf$^Av`i-9#+3z|T zvKl$Bb-YOu)=Uvdm$~}HQ^;gJ?uu=5g-;a+yPHev>4+9C&$pqnXT>BWl#$^;CL!kP z^T2Z*kCcvkY*zfGD(XgN)46Bf zMpqO-d2N_0)&re~{|PF4^~o6UtXNpQlH-|e8E2i!8tKH0S-kTxKqM$5=yK45`jwe^ zd_$fU68nE20di!yjJU3<0-2OY_u^@y=`Ca*ObvMwHS&>|G_%d#>RC(`*`pgI5|4KB zJcHNcKMQ~Omj2?`3pjUN)r3GD1@i)Fj2e=}oN7H5*aOrr_SD+5agcG)wj_SH_7w>C zDG_Da5zMkv)0gJ|o$pWPNw$8R(2Myv-dgax3f1H#w;V^3#vDC8eR${id$53R!{LOCk5gD?yBLmuh1}QXo};hx9AkUdznPKfQ*qr-BuGqx-ax z{FS#5UGCSC=>w5_Zj;E0UcY&P2O_m+$xCDe|C-22PBNsbmnzFtduDhuE<%?26s}OK z5Rf_C;RA7lung=YWH{~5)M#*Pn-VnUJOtfT+jji&k!m#BK=pHt? ziidc1JaVSf$Ml9m!FZ`MZD}2i6((6s2Y%M~HET+tFmJOA_dMyXBF96{ ztHxL?#zSG`TUjcUZ)NOW1c4;~77tu9DwGJm->3V>CT)s%3%av|vK}XGX+I@~A>${lVi1NWBVi6Lx22$Xw@W#m3zMkd>Bq)q|;+IFkqc68#; z55oRzOTGR*(wAa<>q9p=%4r*hkxpAgcoUS>P{KtHzls!S7o`KF=4Ex zpywejCzxJKsh)&YaI|2hOP<5A3p!ouoo^UvBNHELIaG}eW|K2U`$ z)?Ruj6V)nDUH<-~Mf^;7GYZ;En!s4Kd28f;5Iw(WP~Nz-+`AaTk^41Di1jQ;tLAUNyV^5( zvUR|2Z5#ru(Wr{=%CkSJRVsO?mGaX^)t=^&$(AWpyfq53zUit*V;D97V@5t7RKGY2 zQm;R-T7q18aUSf4_?Okvzm;b`iCNuxr+-SvAQUwFKdsrgic?_FQX<4EO6dDTDU z9q+_2f=?|=Uws~sziYQm2m-Q1j#Sd$Bxhp}EpOc=^kw@OfzWn$@T1|ZLOQq4IV;T- zB)Yd7rILORFi_PUizebj;v(X$M(#`8$H}w${SuGvs6GFib*g=cHQlZRIn3*0VT}A4 z26mRZB>0emq)XSO9>(rQQ*WBa2Z)TwfRn*4vcCtS?`-Irj8BgKgFP!GsFan*8zQ!v zd}0_`&r4z6z1g#Bt9+3j;MEB$pn@OyO+4tc9r|D09jEdYZ}h*KJ9)v@`hRHd@*Hl% z5{SMqAb*JsG;ZIeLBIBMgWR*F9NAVco$Vg1%ttth3Q;`oZSU`DTePL60W0d#-u^?B z`In~WFcgaM1!BB)`mfy7x6cps&W*9w^zxEly+U@aaciiE58fvWRMpf#My;+5x%%U1 z`0pyA;zf%DxH~VfH|-hcHZp5{E&|;zA@QKs>R!DHjD;Z+c?3b4BxFV`J`LFj= zlSJeP()f^X%g|QGP&LXAYYUq{rc7an=U5E6I2f)hP+1r1K8d3E)cv1Ye!p`ZU9uz zPMU8q@S}yGE!dcZdvVxA>;EP2%M35x!T#_eA#cEU6ZpGG#?kga`?BSl44JC)7>dLJ zQBUSBg#qSWXn;@l??u+J7@0*`y5lSkRz``8+b=Tu_9ok)X$$BF6|`Wu>q5i6FsD2Y zwhHK9vMY-7lNo%i}cZ9=2hPHumqkpTa9Q zYtF}ZK^Ptty{{4H+i|~Dm@qV;t_flPx%C9ezw=ls+Wik+DL~nuQ_QF3t;k^@epEH< zl{^@`lk5%mcF{xp(i0q4c(kBE^2}`Q3H%)PE~Y~2P1%FTz0anr;>8pjW~7Mz>_0{&%w7r4CL=;Z zka1_z6S_*$k!i4}aED^Dw#eO*aoA}b<%;I`O^hL0ryy7TF!|?9b*!_b`hKF4!AuHY zTu5BX0SVqYnv)S65%;>gbW@#Syb%=GQiW>*c^l`j2N6F@A&$$fbKGwSGMWf`%vkFX zyez<^mFXnJQ1DlE_B4_y>~nB=Vf4nsS8MmUE7FI&??}^eF1-FNIEkLI4_^fuitl15 zXtCBCZ=o~KkS{!zw5S?%NS8YUZpznrjHT1RR>84Uu(D?S+wwx9=n*BJ_s0_Z3?l5f z2>c-icNb}d%Q(Edpj#fuo%6(d=l?IT|1T)8fg90}XW%5eOUC~_MRnTvU9ygkQQe|J zqAB>Cl5}ny3`scg*?H=d>2yWHh6=w+$TK?vs#5eKz(i_BjmOKD zp3(DvF=KhpGOW=X92x)Nty=G$F=NLY(RRsWhUjIR{2wN*-ygQ_RL+ti0tf=$-2TJa z8}L`htCl@zSV&TyzgwKOC1(5m6vjTeY2fO|t3d4l(NsKCu#83(*7XoZuoHw4 z*6jO82cVRNHGvmx8)HBl&&SA_8}7dM5@q|}@LTZNE+NSrm?5kHa3k>fP|}AwQ4F(} znW@sA5$m5LGCi`dLTL7S2Mu{NUg89WRz&1h%l~VD5w;=s%L!btJh>HUvqJDJEXV2C z3AqeO11#JY^}d(ijbRsfF38uJG;RZFmUj5!DX!33Eo@_4owO&e&71v)V0L`F-7dco z`?T}#F-27Kr-bie_wYlSt|+o9=++>&JquVtBbpvT?5Z1^AM>G7i`3++F5 z1R&8p{0C12lA*IhVpk+y)XrU!FPJfHF|F%!;@w$mK!&&dE~|b3WYwTq)K|y*gS`K9 zaoUziwUH>_kUrjeE`+&L$_c2?B!07p1nuB&>L(+{K?NL-dxW@9N4wyy@Hx|m<}~xB zmiOo;%0^6kf+IM28utszemjc)Xo+x^e5I20ERU9la=bp9x?^tyu9R`gkP-+Uzd9CU zI*QQm{`f7`-aNJ+sDc8^sMbC0+}W73pT3z2ZZ&fUtZ6o_x@p`oH_c|^OUIt;XI>!g z-`rHi?mpbn`yJRg9XWoCVZ{`(<>a&Dsq9n#AAJy~q}I>Zc`ldylYc?z#AWgCb*=`M zwqIs$fB!hy!v1#$2*=f=DH{3rcY{R0(uRcXTU$_X$vjpIxgWAnm@1D=U#-rG&&Wa* z>SUK1I&O3ZR8`b+e_RUS(&9&y&s_&R!n}J@hY>?Cr&i#gkE$N`gUzxLITz%;}wS8-aJaBJI;(Yth z=c*F(T@mmxh$;dyaW$5!v4)ASqt!~tbE^EigWw~vZ^SD%7^(w=ple(xK~mvg(vYa^ zr%{40nLopQs+zU-T?+ucaX&i)zaMU0=$n5n3itq0n22xb9wnP4TsLgmeju$AqR)jp zy0F7Q@{`d32rd6|?BL@ln#52``GjXv>r#d=$<}r*OIu zA3FcN#GNxg&lJJCblbU(;!Vi0sYg0aA}c3XLQvOF)NzmVh!_3881bpDkbn3MHySoQ z>*q6rM|{NsgPQok*w#b20W%%0`g9SI7gP*zJ-xn(h)+HxbS<^^M9sDXFa1jf2P#;f zv&aqn&mh39FBu2LzA@+y@KFiLwOA-xvTnZ)E}itWpADJd)x!QS!oS62Z~*_Z8hPa4 z)h>RC=_Hxt^5?|3yWUaL`)TkGB5vGprdKx@!mm7#UM<{c5_^7Z#1166Hd2dmzPBE$ zt%7N(viEd^Y|jXSc;)L?y*uFl@eN1x#@lzzZe*9=s(~saZN!nw`iM=Z-vHFpe|Zykar+3-iq$i-3BiOh+UzUURV55z0@<=g&|fFNND4@XPK0T1+4-(j#{@n5oh zxLJ~DPjEi*%+g!mtohHbfXH4PK?*!xA!z}ow73i$UFYzEovCiAgx* z+X=B%7sEWVwJa!d*;l*!%hjnx{J>>m-^e_}N5$=>5$@6}HmF8v`aD0Ct**cFG<7Uh zai2TYEg8`iD(G280ZPd{h?#cZWaRl$xlt{w0#8e`(G zObE7ivNMu?>f)&A)cvO|AJs@^a_Ur8va$qS$YPh}V|4C4K^--cLgG{Aha!asTr2;O z?k>`fj)4I+@HGmF$Sd%r@lkY_W&AXe9vgC{E}E(dSQ&FXw_tK@J1xXfB$?vVvlz58 ze;R$I`yy#FJqFNC#GV6cku)8S@|6E-k<0S{TljBvMn6XtL5Z(FLe-MLr0+!<>6;uB zpgQ#o1xDdbG}b<>QI4K5XfU#c^PLB+Boy}a(emqndl(bO59(VcImR)b1Z{^kc^$H9 zP4cv>YR#IHAA;YR6NO9|kG|ejQe^z}=!^!hTJvN!n|eT*T2+Ywk9(D}e=#O~a4#Z) zr|#CBv8&gT*8??h)wZ;kI2Ts;T?lKf^JYhbPgW85HAI|^pWV+ti_0s36c_j6KVBG} z2pj=wMGQM|1i%Ikc_b_bw+vA$1*Q^gM=EO%VyWy1S}S0Nw^anFOTupnLusQ$&^sp|2%22cTuaQ);trtM_s-zsZDyH179rBffIX2KM^`@B2Apw0&z zERHQAKF}Y5W%vJsvbTTTPGK@^Zi6lp{hq@=qWq(nqYLPEMbhLDz0k?tD0VUQX? zQbIZeDQO0z29QCR@51|e-uvf$fA1gfTK+LhX6@N~U)OcUaUAD);$sJQOhLeCnaega zi8R@r=zw!hG&4Ln>vK3sJjUPm%^V8!*Y4tg3AZuh$A`Jl&w(=O=8{r{jehpITd2e7XPj(0w=mZ~X^y^{VvO zp9=mk{?mSd3A^i+c&bQPQc{VyFm5#=vzxkpzna7OKyz|F6Twz6sH_LQe-`Dkx6-;eG=))MxK+Zz^ zaCzz~r&p zejl=>8?>Tt%g64)&xtUcJU!z$joVBl(y%a4!4i+dWM3LypudUk?JHHV?zU-9&i4z) z@a28^@~uZGkQauDV;9f6^B4?a@Fld3{$k?t)g(F+doJW*XG0X3iCOx}s@Pa`4c}YZ zlI`<6cY{I)ZJc5QDz(#dU%HryJ3kFhr*^k9eGutdQ8hJvZ|Vx24DWV!GE&frhv>40 z>9Xqui_+X=q#?>HsliiIi>YES%|7}uk|Rq&LnXsU6>2{>zEMRJ6GK>3RMdC*<@Fo| z9bM1r#BC^3AxVtFt5EijNlAGvEj0D~{6%GD1m8XVOs{pyc4k^U@iaHTE-Tv^(UTj9 z|NO;^?AqG##hzb63cWpC{KBEd#l`0I&lR6y4C08 zn4`TDGI@z(>7u z1^jK7`8Du&3OY&!M`L;s5s|0HIvaBiCMFm+Mc?}vlC#L#+OnPO z&c$`)NG~1`6B2gt5$D#{x=PPt1&)qty1BbE4^0L7tE;PDt-$8iZpR0hKwVwkZF314 zAt#bnNNc9WfftS0iWvn3jg)~c_3Z4}a6)yp^UhoY=h@RhvDczOR(x;Yzb8c^k+}s0 zl)Ea4zvylyr>D!IrP?g@uf&0=T&AKL|JDvZr>0HMCX+K+>+2YdTc5Riv5&f z=?!1Rl)Z3_EFV?($*w4u5MP&|i?3BcAMzjNl3>@diLhl6ImubB zVjAp2vjwnX73&{n*>Kf&5Jm>!cNhrGO(5q@CpmX-jf4r18t!~+7GyTlDLik-l*=2{ z+vODy2)opyg2u;djWeCHFPKzBf#?;?0pHf5(O60Q~oF42JV6L|CGRexijp!JUtdvH)_&5cZZ1Bt=mjIk>yCWn^7r5ODfe=z*1`Dla%*mZ z0|GX6a%$?K-O48-u-`{VN4Yt7)zsBd1Q#_mJZ1WgtlGS@F#DaEYO;8(c-~zhqMqJf zO+&+s>F-tS_#8t+kJ#8`*~w)cjkAXHW4cWv6!IQ%W^s2mH#I|8s!K~tM;q-Z@4v@= zIV~T6#vr0WrcOgzAy#&Fat~;}`rAQ6Q)g4neeb*Y09z>Ax!`S;$|N!?Ix;hZ(aFVi zC&qMf0aEO?Z$m>&Cl*nll5~jp+x9VLT5D-Q6F|EWcCAt|QJe*lew2W~@5?+S+T1{T ztJrnalVnHo$+(b`alz78DE+GBlcU+mSVf?538|g<;9oK^93?|B5!X)!sUJ!kq-&Rv&&%zM=GYNGQHhm{O>a(ff>yn1vWTr*x1;$R3onToR97|oF@L6jU_*x;j)C;CHK9YI&>T#Kpzo7Am45V1<%>42@odX_vk*Jxb)rLN0zpKN>d{Rq_cv(A%~=LO*vZ z`5Eve*Z`H~eEmGD35{!hYFseAX@z>+@~s@xF?%olksO`_rSuMVU8%@cgu6@Nv6V$V zM3)`tR3`(U90`MdppXx5pS68t%*M=yL3_+LSx-FO8K`2`Cc@~3@G;8E%UO=}NQuHn zXC{)zFSo3$ih9RlV<$8e6@B~tPLQRrsRs7 zx)0Z^2|WxYZ{v9nS~j-8D;CaQ?KJ5PKm4a%ByoAb1u=%_U$l8oG<5M8j8E694yVY- zNevX4q-^U$hZ8mEb!VlN!i}2{+h4AWTh!Azm(8k11SK&)C7*@yZl=wiu-z`uScfO8ILC~d43pd>C4dXqoR2% zJOt3%+bUU_P=e{>48O0h7znJqxxy&STd`|%S`(Rj2z4tJHPZn0_aJRQyqN6|4p>L8 zBPu+C%0VE=^aWFn&8oYd(=b=E5!CvUZ;&}#c@vD;L96jx13K)zu=2U3PrQ5Kkza1o zhoZLFUWO=KQ&YmS9_tJe~0Y`1a@+bQ)m0=JKUp` zN38#PAjL=3xz1rQA~|C0bR;}~FjRJQ3Z_-wZE9VIGO-&p-G;uu;313Z9)V<2i`M%r z;46Rry5}dPzApUki%!Gt?+qD&zm+?yxPRh@u?DWVOS2*==0(C^<+<4wU!5uC3GxGY zq*JC#l!TVz+!B|OJVOoomNy})4P@lOWw3ul{^oC#5SkUoCd_%+CFR(c@ynvGOp9u%5-7xS-3vO9!N53>zj=qHy@ zt&55q3(z_*v9}wXFrFIMEQNd*J61br_!+Y6R8~c7w&QwQ#jIu{}Mnim3Qt$C?||eh1P5q+76E)^CjwbEvRe4Tpyzj z2^o%MQ;?KLn+3J5luR)7>r~y+A)T*`%T4F1K_qcat>cSw!0vqZ>}Tn&73ZvCyY}`H zZ8i`O>?(`T&(Di9WBJ(m(Zpc(+Rq8(YF+XTe;b^Xsk>Xl&d1N6Q(Szr0%2;y`ZhAs znShWOOiaO`prsaP$95a>E~}_efI#M3Y!&a5QiLr><_i*%0gLUY^;g`*BL7jZgg|Et zt-Q#UhGxpU7W`Wh05}53n&z`j1XCURg>7e+$jehUcgWVz>v2y$$eLy9{&{8Cl!6g6 zr?Fi*;|R98hd$>^4viv_Q67|z_>Ju5EB%C+l<}nHSNTPW566T(QobOx84yhx-fks* zp4QOTCh0VHiHSaZNw|6MsHq7`#m~aIv>&kwgQ`nJkUMm5 ze8*kGxf83nIF0L>%+v1N5)zsGlOlgPikiMh*62zMRLXB1aoPr>co9duKk93rtLDMC z=SqW!I}Nx*8DK#kJkLcLs>}P`>B3K~uZwFmVmVUT)=PX)SX9lc+^`UoM{}qxvRA376f(b?(TQ=4Gc!+=F-Mb+}-Pw(+{a27g$)2DvPAdWMysiJWqq#Bj%fCzuz|x zwqepxRc(ja>rSaM{R$QrcYW)R9ay}1+vDeK=$(Ni#@l!u?uN)y;w6)~0QM5r(i&(? zrme4`q2X01Qs!vwa5A|Sdp#NL!cOkC@Lc;WcUe(Efs2bP0?Opby0fqV(l@X6+A=5< zyHuwqDAbpxLpr z04fp#BD+}#(&ff+@~y`EGk^}?&?jsz`8K{X;#(SSKn8Z z@cF2zDXu?h=yGgNL+MXBs7GLa1S0oM)U)Bf?7h_@#~Yi}wG*Bg$#q%5dSg>z)z#dp zs^)?&1_lP)LVT-08Z+Guhn$1=ALaBY+KQbjd8!!(C9kjN7pB$n_HJ}cv7ei1@y0K) zEg{7V<&qHi$=hi;Ff&7u>Ay}HQbuCeOB5Y_BM=6g^0uvnLZ>XHPLEF+>EiNAN~oX~ zrXX)%>}13=(|6TfSABF_#=tghSa)Hup1!lQv#6vb#9kC+>A2}SAbRoMYN&^qT3O*n zcBv8`e)*zoH{W!}-Q68GTsAp9_4BV8pw%UV2?X({}$92dX+S#m2$78q2e_J>gY?UA}Dp}Zro$$*YI}w6UB%e+v zDO4ZQ7jUw~ISX7eUPIoMC$!S}otQH>A_7&9C`({JN=A5hAA4Xrergiob`fpO{zO=5 z%|`gDHMWkfo+D0kn_6ZuB~N0hk};zcP9;mmj+sH;$yH@~=3@7)i7?j8a^AyQ5yxY9 zVb|bpi~?zl!uVbT-)Y3y(?=nx+f>o9F+PdRJJ-YbYdtFD?!W)|z9Q}82N2RstePOd z*0;{iQptTL?fS9sXny%UDM4JcIYk~tgJQ$8ZhEv)XZPC=k)g*s9=jlKiz*$vMWgRou~P z*q{2_3K-ZgB-{7)ws!lErTz0KJeN+lI7q65J=F(9uua9j)WS67op6h6vt@S4y z&1PEY>DDrx!#{wiuio|rJ?!@PFU0&K$ z9L{w?@ylyG^RUwL=`1Iwdiu$*JK5lCe>kp^4fSDYrR_FKTEiL$5W?Lcd2$u}3Q~${ zjJ|u+R8(9dB4Ihp3F0TQt+c_ivcfSzVApqSPnLqS8h&u#ta05%FP{Khu~y{7 zZ#GKqzHZwqagd8~jYtN1-KQ%fjm<77xB(zRJ=I$jC=Bs?rFA|kK?d|tK z>`W5VeT~zCf0EzI+L|cZk0?D&IM!QBi_ylWm0676M&o;uGY*Au&Qi z#LV~w2OE1y-8gd_VWX+3*}?hv?=2+w<$SA256=t1S!!?ofa~3Sz{ifd5{{JDqD2rg ze@7<))EL?|6wZwgA^UcrAs8c3cZt<;S-Pwz>SKp))U6V`(MFwyI`p|U&7=Z|Dh)*g(w zc7@kjFa@$=3>aVb>!977oFeY#dEa}lWMadLH>Z9Nz^G+qW!a;R6^Q%fQJpZd2)X;h zipFf2{wT^UW&h6yy}m}hKb*VFxB+ZxDSjf;P)HWn3xW`msNPrYQV(urYPH>^>UDlr zJfk))CqyIt;FeL9(k=kGii=qu+!FZwp6mWH*XLy?bz)KwbVtX<<<->OT6RiywD~L0 zipuQiQTXmWS6+!#h0`w7vR;(wudfkP-qJ+TvQ=pB#rS3tk?k`?vWrNSKBwG=R>0ns z-Q+;1A~Z(;_f=YtRsGVwwD5N#BEhprOlLlTzkUVdw?swh*2Wz|L);BT!gp8!k6o=# zwwa&Cy(98*X~!TT5+Xg6d$`1bv~N$l_Oe{C>*k>RA_=NbQ!-x-+PKLW?2nteWlzCW zDR(3X?6v#x@07f-SJ`Fk*Y5E+QoVN?t9nVW8(J7MUczWc2mIaJw{JVi#mjo^D_lQS zRKz;I{_6o1srsd~I|^Als}5;ak`I1-)Fd!JL9f>AyZP3rSwCmyBI_%8y2byT(t(c@OG^mNlF6>n$30 z`r?Um7;%b)jt!HN?)~-KAtcXkt1@G7*rOf&k7;u_^YZMyf~_}HK`xdO{(|n~&)DYu z@LWXB9toE94T1pKz8VgSGBOW+8Rld>10)h1nb=Y&)ZV{_z5joi5fw2jCx2v zk_$3Wq)Fb+rh}JHhrGZlI?OZJ4}+AZua8+Ic`xJ;KE*Y{StPk4R+Sb%tF~Gxrdx@d zgU=)=p67HjiW1HypVPt(*BpoQ9nD8{tZ|iYKGQP55`9%@MD48}Ce!ebR!CO>7LNgR z{^nZS))m>hsd`Djbh`6#luhL(!W}w(7FToP`p#cwJZZfOs||g#x^m3Zb)=!&$Lhi} z6pl2`;JXOdb^L5B>2nq4C)Q^fdgWzV6oNrQ0xi&5zO>^v3y0Pi$D#y|&dwJhLb;9% zUY&yp{>TCCDkm- zxfm1Q$F%)c@K5Ybwv4K&;d>YFHVdh<$#MZ?mmr0aokf)TDiT6;Q` z>~+q+B!}W51_e2ZScOb6#aA<)Ji1_G$%)=W1^z`{$iHG6;JJi!R6b>s@n>>)sKKAKqLO;^d!&*3m`7~K?@ota8@$}5}w=51N z-68Yn32`|_DdSVg0`K%F_|LZOlqBA>N@X3H*SZ=%0Yss|5GsdjPKKS)`w#>UQy+F<(Spi{H(j7|A!`R zC?$O7a$X?n7}cg$-gy`j5(+EdLWH(tm`;0o-}$R%7@T7HH}9ieIjqr+bjND;l6Smm z$B=)xgq0LBUZN&;6GE>jeYUHCOa`V>cE9q9wY|Jw+G-HJvFRiikuR6b!1*t2jcE=5 z-)>A0mq1z{0cE^8rGD?nu&5WgZ9n&IeEp=~~;<*~g1na)M$=z2m!<+%<@W0#qUsYj> zVil*u&j70crbrh)bEAG#h1ONVnjJA3c=|jb+eR!hxpxVJ)G9Af$ ztLHoRE{-Vk@VXUleu$1J3+f<$yrG`#y|QswwdJ_r>l{aGGU=^wj89h+n>6b<4d0r@ ziqffw>X_(RGTR`wg&+Mp@-QEDu`;JPKi!p`hKqZlzA!swmqrE4;A%dqeStC?vrE`2 zOklwG8dp|9tEINy^!lHM=kK5okKfDF_w5AqTl5Efyco*ojMGHL9J-63wP}-bw%FQq z;<7Wzz=pB#g7IW&_X)}2L*>WBIY2)$lGvYRRG4hQil4qY)7uOPds*tNR)hT?236-1Jc4nP>l26bY zu!loNTao~ExMCcFg_Vp`M!zA0e=AbDA@0wF!1y4Fp-^orvV$hFq_%i%ftCnoB{MCbhVP`&I1J zTeqoO#slzGA-L3fNAFs-v^6R{p3zF2*hKXYJTL}h|`0^^6KCJ(vQ<5GsM3#KJ zgss|7nfK}|PPA8#$=QPBAtGXUIOql)zT)9D7jF&NsTmLRh+E{fVll3OhpYdx%>4Ge#%u(ZPivWRE{4(Gqn%O2&biX{kJ?$q z2jI=md@3QsaGGiymYw_HL4?Qfu)i+h+1TZx*fx$uHqjVhobs0hx;h@=%!jo7!J?PH zJGA?Vznz_cRWGXzadb{3h*ri9OvK6(r+C&&6OJ|1UD$g?1tEG(I}Lsr(Bl{`j-W{M ziPh-4=`b^t9#mN$t$#dgc|Al0@-vG@uEv=b3w+aR3XE*mZ#;Yg0(4XUJG1rFd1iS) zcF@&SZ)>SuX2$r68Hzrk+DVxrZC4+R)+lzlItyHCR~xA0%|F*bxTd(|k*ta=2P%wc zIokDWXQe}PLa>a|)_qW*)x!q*Dg9&yL%~kb=JT&r3?5%7nlQOH{J$d2pg>D`Tp4HK zj?T@tfh*~KJys5g=x-$JSxv&}u} zB^bdy??rjZkykwFf75H+w-gk3?R`c+2(GA%cC1ZCs@%g8OifGE)HK4xNPerHQ`siD z3mdf}Xl-pB54JV=R#VWz7oS@Ihtpv^)g)gw`FBeDE>~(E@$3{%jz6k!O*3dC$dN88%Y82=&?huqK1qkoU*A+RL^E>{@LcgZX&VU=%m~ z7&d>-R`^@ZMUJ4-s8^2|g@w%l5f{-L%z0=y&r3Q65N4n`Sz1fEz31D>r?vOb{uOUA z-78h*&+mtPWPiAe9;$^$=c^Y2_gjR?5%by#t1vvE6f<6U$fCopRiTEb#zMjai}!3g z2=tUI*qX!mtcO(daxFG6ZLM%zE#iy{46nPuDeA44pQdTDCs>O)H!3MGqz_M4n zbmI*RFajQfmi7h)fQ{MpY9848R_hXIjXsh|3_Uz_Nd~<>K2@ZZblB;=nBAr64FcWL z2^h_MkJOr0fQA9U=5mi{WW4phmBn&X#V}B1$biJo+xuJDhM~kc$Ocu_)WJk^zose?za-OuJPzUA9Qt%#;#-;i%V zZ*2G)^V7oY8Ofs<=;AtS*yZj6BP&bUfJ440KIC>sR2)pZ>M>&_k5<^ahw0T*lE z#~T3x64!6a$=~0;G*&Wzo;wCE2E-c~zC%N&n7LNQyXytqA%ao<*No7^xFbou*sJRS zVRevv_@DyEg-$^wEJ<@>4E@o_(kKLv?`HnWPwaG(c50%Ex8_*NdAj6->Jj$$L>%9G z$e0@NdpUdIyCA&#X-A6P;wp`+7BHEEz_7Sxek7i215B3GLpx)$iwnBP=TAY#aj zC>&e|k3NwUQ}OfX1WYCA@v$M8jwS8sDHs;6Xd();H1yUJ2D4POc9p^Ea&vKEUJ#xUG$T9)}16BUWPDDw>8$Iv_wYceKc|8Kl;3bq$5P zaVtVV$I!FihfBk41X9_i5-I>Okr0KC(<#EwPft(t3LEZ5%9*aexr3Ki0V7vQ@>so) zw*qP)2;?H7+bq)^o8XEm|R`VKc^m7=+}RdSAg9=#Q_Y_!mJ~Hq%0Cslw_2ItcP^xYzquJe6d1_#Qm~*UN7@yd) zV7}$-MlTe2aB%ZeMf_|VKpF;;Jh4+(L#-HTUB%I^2MiHOTR0CtqM@pqTWu_iIvR@Q zzh&AHZJ5gc>Wn?n9o<+8OSoLILy}>l!a&#^(7!ZghYFkyNRL6=Ko>GWqJllVE}!$v zX>LEYoP_oRv`oax!0l^L+h+Y%qr^~|U{}afEQYLGBY9QYn~f71x8vakGIwbPYDPx6 z&BQ$1-3!O;2kO4N*Si;uOPCizp;bVFKtMo*dW@2)fg!&dHji+q+6}9c)8{w(&Csdm zqxSbnnwpyYjC(LloSaBRJ$|a5%fCjz>;a*P^izIzK@HwjVz~jgfWV9W3$XncTF*x& z=XbfYFz>yOFf(z&@IBc%hIFJ3CFRUFpJtaf&z)L4683+L!a-G=^{Nlw<)WRdu6CV% z3^WKRSX8&!Orz~xfQpK+_bUARm@09*EG2Emat2Jj}F_7~Uvy~n~_yqUaj-(J@NX~K! zr?Og1Oi_7xsC6o@#xGi`l%r$udOA96jEUzudBu&C@0}=sr5A6#deN$}0iJ?36PlYKz z{SiOKo0pp&Z`&Y7MxMq2#2NsE$dh9r4PolF-;=QW{)xe!6(Li{kaBz`IVd5=ox{^z z+JN!;zHb2rXc{Oi1HbUo=*i%X~g15dvgm-Rh zmx|HD>+9=_N-BCX#eFd_aGHp-D`2qf<9a|W5sk~wcA?yD#p~mN+JJ;ev8v5B;4o@# zv#2+aj*99D;o2>x$l%Id{>c9f3tRs_-kB={3wWo2xvz8qnd_mc;GZ4{)tCusuqYOXQ z<|U2kHklJ(ACQsvzVV`5f2%RTP&-8|GbjjCC^jZCQh8$HIS#B|ch9=1A_@i*0Dj;o zeY&Yhf~V zc9}1F?xDHEC>PaF(G!k(So)kQWzRqpcFirsab_@bMQKlxY9E#5gRTXT4C!P1Gyx--Pku;ixVa0RX639u!^)@#MkyVjW>2137nRj2VC@x|0e*md(Bde>cCm=8=R3YxH>=7rY zqN^(}#sfxm`I5EJPkV`bkV(~#NeRm{X0aXBy)?o6wl8pC90Si3#*weM7suJ7KIW9y zPd13@rPhic`v4bXG?&a)up>K&|3%nn?9w>sxSZzrSYSgn$3`mcM>fp?b#9)Ix=TBC zP)0>|F{2yJ?k5g4V~K-%N9k$ZC3}fRi(J6?gs=?JHtX^kc|CF109mLnmw9S1mQ(O6+ETpUI6_9@qtQnv}7-cQ>hbPVOqC>uRpf}#S#FxC>5DAwF;z<8g*9k>zpaOe!kV%~I>@ycZ9jD$K!)8w`44@8uDtxibp#0!g z6|FA{i|<3V8YK%&OwU`>^!wKEO$=PWYi#e8+F|i4{1V);g<0NAyO-N45i2uF4{qUx z%6RW_wz=JqcR*~gadV$?%3Q_y^z^-5tE)(7Q4n8OAXe)Fgm{{(4g3BMzTPR!0|Puh zwdcN*a&9@Ay!bt>^4#HU;qFj^E_>omXV-PpQFDEVx$0MQ{Ym|Urtm_&7ny7RPWc2N za0lT#&_=yiGB=t{K04!kMQ=){Y|`VZC6SN(LuRa|-HS&vCxsTy#oM#SX`Th}aMYLD zr#%XUv$?s+>YYk5AcwXt4U$0v*#D(6p5x|l5IvXNoT#T?5E-d}WqmiMXOD=d`K(H4 zE=*~T>7X~QN4`wdVf^6x8%f0`Qm*$O{V5ix2Dgy&d?+8yy{F_5E7W`Ii`8GB3aD?e zNG6x_(T^P}m)p^=xY zn15u6ouMszn?gi1%+19tdum@#Aq{?eQR^~}j+{g%$lGErg2s6Kuy1=f2AR(IJaPD= zJukC~HNBu%-wM!7w(M-^rzppglWOE*KEQ~zN-rjT>MP3@?FOZdp(9hr8GIlbSyczY zB-OA36~vMpHCD=3FM)AGsq@NFN#2{JlogfIAt>?t*b^l9Z1xGS9`f^d>^Dar29&I} z)rmdu_?A)Beivn$){_zu)GEKXS(;Ibj8O0*9D=IvsPvat- zKO^M6<$TqA{#d!swM~1UNKWSu zTRBr>a&mGe7O$kb-@ot7y$0PSJBC#ldOcXFbm%u2*JpR4_t=(`gvI{%tXgD;E9d+pCdLTJDe)9#W2-HJm4FyaNupm0% zH=G&pG^KQ@8Y`xpaTcC`_p$jILZRCD__`ylh4t$JdrU_g+X7D6r3}+4K`Vu|{j~?) zq;WmD03uLnHUyOxj`SF~kwxEi*=LY6S;-i0A5a+{Lu^=6x$QwrECrP1>~x$nmxodL zV)PVtzDlANJ5b3vCubz9xNJ-yug33iO}*8h4luE!v4 zvqqExexNg({^PvQ*W?>EvI^1&4H8|`)^c|_`HR{8b&aGO^|aMS;JD#T-T_mYg`W?i z9`ia`7RZYcPC>Fot1hpo{+>d~?1BFNr&?O#M-2DIvXQ6fYMMYgGe2+0x59sfOpm%S zG_10pYZwAaW~TRRG6DOAXv1cYJ9cQ0r9Yod0Xv}mAXXty$g9dy9fBXVc^nzY83Yt{ zioB_CBEDRuRH1YD9X^2@7nyEHpzPhklnqcAmH~8+0LwxZb z{i|K(OX9Whc;1^|$;BYyiN5=TM~h7a4~aX|W(~qZ zWvQJmKE2$1@CYK@w=LubDIl9dQRdUX5o9->?xi_a%h`jDGE){+Rw@Ggpof`>i=RKV z+@K++v49ewH%@lcd3kvhw~Tc`g@8%K$RT*Vz}+SJtaRwrX8iz^IB$$@YL1J84@oc&oC zkP&}!s&?IY%*Q8?&3;Q-O^q<{H&~F|k{VWvqP^KxYC=N7qKb;JAoK0r%OK?Ywj<@7 zJ?oRxQ!^VIJi_B+;G#kC1qj_WCe>m?7y&wxek!o;a(M*y@MWgP1xqX6*6#rmT}5_$ z%!m$zWdFq2Sim2Wv=qj>Bxtwh;Xrla6$pPXy*N6nRJezIRrU(hZ~uoP4duxu+zl)b zBy+TyD+%K5#%P*7k#^5HmYEA|J8{Fkyf(juocuy;4SKygd3H%WTbuxt%-%gA%ckNj zHeQi*g~bu38a^n8QJ70!t*h`=>Cu;B+X$TXkW z-P|my%v8`aBV#IL(mH+|>z2s5*Y$JWm+MZ33_E$}WyM9%Ts^EVJ0}O8eJ(gLZDwkE z4b-z>1TMdSMG!~e3oEWH4ZlH^a{7^@M=I2XlIpWl4?dfTRsfz3DM30mD?fW+xqP?(xhc+L_GvfOj z%sRG?OEbjwd)2>pJE+|`3; zXWwLrfD~MIqs9VPZ^2Ta|GtHlwL`~P0WH`1(2 z^ZG!e#7Kj8KBc3r{c5s50Z806co$q3jUm=sFJXf^Q9$)WP|i`V3vc0_9R3#T3r_8e zikDlZm83+WqcbxRprGV)YK8VKKEJRO!)Ya6jg9laAluiov$IvNhipK`kNOD#vh1lu z@-pLwubu(r!1Do9IRYwfy(>vdlDZ3RzgC8ZoSLHZ3Lpr zW$#k)v-nU+$&)gpde)Tp6MW*3N{|(Uv{_S6FXccNZ&X3VMHGE@Mshu~kq{LSE^ACV z=drL+MRJ5;r1&y!%3YqhfQ9gv?1oykdeg<>){Q&-J2qGj*5`enzaLs(n{OqyMkS7X z7_eaYNz%enJISLZdT?lsMOkil6C&Q~sWeVpQb>F4DW=KUfbm(X0S*q1H-GBGKNxcd zpV}ghnZS<&AwcC^nHs#%C#Eg8BCqF;J_2U$!L0*7ui?{6@Lj4XhFe5;{aVN(um3pk z+Wtg7mux8t8}?hH#t4j$(;pJ#|97IoLPfVw2iU23?LF1z7(^2=8CCW;@0BQ)orDTu z_|6(5Fngg`tbrPy1;ijoUS|D!O`T|Qfcd>)UHf#_J+!odW)ZFDTe)p z{S$gE1^VWFOAUc~Gffmz3+b%SYVA$OZM$}AQo>*34mgu<1-h#HR}v*y>Mk%HFRY3s zE%BDu`-rxd7Xqi15*oi|1iJH>8>Ti%FE8+THrgrD%UMTo)A< zKj3K=dc{QxXH$4Pr}z1J@h6Qtxz_#A@OSpBzL!S;)h)ezFG00*x|pwAb{@cEawj>G z^~Kyk;7kaU!>gWmU$u>=G>Hz;cE1LG_nXW#Zelf_RgRe@1U04np6<+iW1v6|%6up< zz^3^aD9HYD-B<^UZtNsV1I>{k2}*(Ry+yk#_6}M9vn|BikS(`^D>^3+Uc6g4c=`_d zM^HgKoW4(9mPpzf_DfTTmlM`l zjke0LnY0@9QYIe|Sv+yrk}R=Lprn2?T{JnaOFfIS1G$RoM!*xu8X72FEOxDnCGVoO zB|Ta%Yjf&Fnenv!q&PhYcOU4@-b`9ArJ+!%V~(;Pc)5YyLORt1XRj(pex9|}v7-Fp zsgxcavZ?q82V!6V9keN^)QEj~Y?$NNL9ea;ZOfhSlqVip#>Wq~!IANwW)DX*v^Y)!|l!=8cGl)rB8LV zx;wxfVfFuOpuM3NMA#Z$0?9`+4J};%y;YPD$9w^Q2Q4UU{hCi~ej>TXqZc~^GSj$s z0$4pP8R(MOfe~cFV(IKq)K$S7Ssszn`l}@VT-w2qY{V-BN?FZ{nXN*NN?c4V9N=i$eCwd4$w6yj`^z+%p9y$=Q zfW`!s__+Y4oql=Y&~k3Lx7xlc4W!P1SygHkAS43{ZPrNm>B-5Dk!kHnm1;SY<68pj62Q}`wYv! zjh_?m&)oZV)l9c~qcFdL)UOo+Lf9?xFpj}hF`e_d{dF79uGRR)fle9Yi+`0jMp_#x z)+MMd-a;|_$}+F&PDY?mJ&@d22fPsxKGB!{Cf&d+AF|8UJY+L?2zLa#GY`j5p(<|4o< zq|M@sb>+?(PZ=(xZ3`kM2k$CuYwqP3=X0iNg3XWcTpl-2%!TcRkY)o_d2uk^%HM6* zTh=Qp_H0nEu_3LJ&y06D88Z_qZaBWHKvEuyjDRAaVorzxz7Z&56g^Atl#!Pz4d(8; zr=qh+Ld$neJ({{|VM6_Fv3*{6=>S>9OUPN*o1BZyv%#EW+39KKItLy^@BJ)4F03Bu zX~Cs{XVTN*P%w3#Oy+H9)^Fqszu!F?7V{M)HMbB`m7P6=2xpXa;d1U>cwn&NlMjF+ zT0R5XCqSvuM6=D+;ayvV*Oyijl3V5tYH{Vz_@WJxdmNHy3~ z_+e(QB!5mQIYVRW2p^cI@GuMvb*HRUJ#%cjYLqsQ)_Ps?mLPGU0F66H(bfbf1T}8w z-qN5|8Z4WAtSQ{4@K2+(wI6NR_Vg10TSx2iMS)};qv|!3PS4iHFJs6yCsX0d< ze!2b)%2&a=HGrueA#i*FdQmj4aa)WF@`2+e8JmLqfpUI5u4AtR>Ihlzu*1W+gpyl( zMnR#*$?jsD=w1u{;_oR>rv>kgANX141R_ZsEB8Kp_#sPwAvCl>LrFn1xP|%<)6_Hz z*tfNTq?M4BxZV{FvG@8fw6uaiC%6pepf`vNR`!`HE{pb?--62G83X807(h6dMFujm`M^b} zz&jt^7OIcg%wQ-B+fm5??kh;UAxL2qeXl96=#c*qSRxFVK58i?W6Fw9Dy%$ZxL(PU zskYcBO~0?8bX0nSA%C?IQPJ$Y{%vEKGXN#-NCaNPUoh(WCwRie53Z&x00-ds*zkn55(wmxx+^fYD4~O6~A;R+&yvQ`B(7@zq`k?D0o=NkiX6DD!cSJ?Gpz4UyGc&P9@Ek{^}-G+n-? zs;atFQd-$fAAqLTP3*>GkRNVu#{hL4Vgo>3_y6(r=J8Os@87>tscdz%$lk6}6lKXW zl|&(xge+4bWEqm(m?VUvQe+(x>avV|XGoEC?1PE1WM9T^7Bh1nb6ubB@Av)Q_wWAw zarL+!Ju1BCe4poWzK+-HdCVc$Cq+a>l`m=jm`cY6;Wwt%4~U6fg^LSH=HKq-oj+S* z+AjXH++WD)eEfF|%;RP93ST`0aG6?tK^E?clIVe#0*#@k-yjEYU8|{zae7cEeZ<;* zr{G2Ii@K%(4}%}`wRHBmgt)lX-M9rUt)>%CnBTbfT@yH}F%5~mAjKB9w^hE4H7|;l zz+m;~D-LF{k6(sCFv~jI4t@Em%*d2qOcoq`yYaw9>=|%B_UNmJ#8s`MISKzF^q+Pu zm*sUZ>ynoq3y7Wcew15+>dU`*@!hzqh*JscB5+W)W&1RdSe?bQ@>teUXx#ZW%{;Le zG?nyp`nNJZDgI%H8k7d@i#rHqv47u)CA@rl=kfqoClkMGV+!Xl4EI$Asw0DUiQMIF zJ%0)c1o2oHfE%pNO@7cz{^F5nA zJ8w%DOK6My%zNN|g)=YRL|XZ1kzs%kC&*ZNGq2f2hN#ss8E3a*o-C_xv3cDH__=8`kUG01dlQ6OJp_y zGlIgfc{oyAVqd|IV1YM}2FeP1OCG9$Rpda$^ha4OFE6hicL~hMj*XQb?8Avx^Imdy zU{#emSWzC1h3@0rBQ4lv#F1Xhh=%^w!Ac*OD(!cEQ z;p+B9BZHP()uilI;46(pxPynpMD`>R%P1WHo@y|L!N~oWO zzMpULLdl9MqA8CdT;G&G`(uy(4{79LUiF-$&xXrycanIbwWDKJ3H@&mn=aZI&hHH; z&&Dr6>sei0A00RKd+UuJRGxUSI&GNf2&M2s7?QP9ACbSqw8)_*DvPvhM{uO;!`f|} zFX-8x8vUj6-8(0<2<36xjo}E)cX2%R7-a1Di7qZ9AyPy3NLoi`oeL;4i1Io24W{IJ zvOPu!$P5tG%rveN1NEccEJCA3(HvYyoo!DMyTC7fgt2Ncv@}2(wZk!n|iX4!E9==;$|*& zcA%`+=YgzS+a;L`JP%Fw`>}%&pTTNWS?TA>d_cHN@Ks`0EayBOgNvcTFZ)JcLNbVl z8&d>Kjb#MFzg`lv8T10B<>rZzOnE|ezP_Kr_u;k|z6z?VU7b|;ww6z4eEq7eb~iO2 zK5^e=Q}W_z=&gR|ffp*rj4)O>-Ks*VOKXYCwQjlxTp2EDqwF7W+UB~9UNiG<&@|3{ zq}k6zF#8A(tvs#9FBX5{H^MV+D1`^$2fc*+7MqX{iP-~CVb~M1YeJ;NB6wR7k{S21 z;)#T!BUAU?*VWcXsu+~|B1aPED?kGFp~(aX+wxbv82UVG6v5&LY0!iuEGF_@7DJPE z7|h#eTI^U0gq~affp@GLJL@hfK}vGG4@SceLV z7Y-R-(O#5eVs?(<8-AIYj2bK6@fXJLTA-sYbzma>uzUv$Q(tO4GMz%SUPJ6oLTzV0 zW2N&swWJApGVA-OIJpZY^Z0Gu#6*(v>1x%sPK}v|f9OL^n~8L}O7%Poo&K(ye`m|i z=r%358HpKPnf&Gdp~-A+%dcC$wsQ@0WA3MRnyzUeuEorlpULm2*mODzVaOGQ-}s0t zb#r!pYjotwjko`g!eYLcNt-6({Ub0Vk%`tg?=k6)!4>#SQMKhbmMkG}ZS9!nNPF-m zu65QN#dE3&Ic35gk(R0Vz%%ubrcmiq+qBd}B{vr8g(F;AV!NqyBm4^+>_%qwYPkoc z=A#iZ0K;1L&qO9!JexX39hpD`Ls?QiS~^b`b*`873xT+5Zq{goiU5K>yq;T-a>SX5 zm@k*4lr5bC^Xm;Z%xv~#kOp6@<0)k(qCSDs>n+6_T$J)b`)1!6QDp6HQN@uwA^aBD znYI;qaVny6GVA#C%rtNf9G0ihMDozNd9DYX)1Js=Z|^E)F(s?lt1w|Ueb%yNdlktm z39l_Zzh5U@gR6#eLbNPqaoH30s|0W6P=MfYV+O7!TwFzdem%ZZzupMH@$=H?Ia@RQ z+DF-844ZUY3mUAKwR&Bvjd$nBp!eq|; zDonR-xI@mfN%TFPwTbC3h~7e`&FdvvOVZkS7F#_k2J&Z9BpF+(SS={8sLCOl(1;Xb zsWp;Q@8Nt~W>lLjSb5PSaY*))e%HZ54gnj6UV1SE z<&}ja5hG;Qs2=oOq@0;Ff{%nBM8lldN+&EyYjcTirV46fVcvv^{Dnj-kWH1@oXl}exaziN_nnU1J7nkE)1?$N-~*DVbVp)Z`XweQG|q& z7Vo069GJiOwZ!9=sp>NyI&)F|RKwZ6QhwO)gb_0u$+w1THABNJsGEI9?U9^z1lK=r z^56oB{jQTXH#_^|h#)JHy&LZ1aul&i(I4mtH84qZ`V!AA{N58G^JEWwSg(O1Ml@f& zd2>6wF8>v?+zK(vqmP>nszp;zzv(!zVIAOh#86)+>xJnXK9V%*+%KCCq^3(Ic2Br1 zD0f*=tgqadEqQU*3~)p~m)BsQHAH0hWOL()CrM4xn|t8pe#;}RXZotc ztIoel=2AhuPu0+qJ>lI6exSwqcIj8|6Jd3}Ankq~1 z46vvatfFO6hQ14#ffwzY$s1%cU7XX{SO_)3D`c7Qad`~5Dav@VG)+){6SREZC)s|5 zPM{?rQO%!3_F5mPf_v^po|g~acZNj%nHr5(%CO@)nxaNfr}%DA*vt#*MHni)1$=RR zOUV(wdnFmvH_DY5K{2IQY~T9w1t{IcqwEQ#6Y+DVYrUfpJmD#=+=3fTHsfmaPZ)AO zLEZkgg~!B9?44K2D--w)gqizKosL)n*8)+6@}ryW=6DlJqxmU-?k;n7w06LQN7T_{ z>uF3wm@Kkwrj*k$n@GeQs#=|+JU);0|8gC}WU=^nyn6ogKefVB%{B*x)i%ffCe5{YwXYA45rwE2ar zvS&#D3C#c6O#pN2!XE?u;fD0YD-c7t$$(TpqENpK3oXir(1U$dKkDxYV7jg%#=1w# z^e2$x|8hS(5tn79UiET|7Oi7 zrT7vbmaeHztaSQPBnPf0e)?1mx8f<12h?A23XW^1dF5~fW&1_pwq-B91`mN_f9>!c z(vZA-dVf>doMSP2Gs(jWc`rREH%lP!UCH0kvX37 zXAsX6SF|?~e*s7}kNcK=9xbfd2{cwV%u8bb(tY<@9`(Jpn{7r6u&hi#)Iz7<+ljh|N4w+(WB0^7L$}Szh=P$;1FIvBO^9F2wp!4!bdiUDAym#;3KYGO4Y=3wHNnunHQ!Yxl z*kG#h)YkI=mbGGIfD6{Twh)Y9H83{W$5L0)onR+cd(Qc@QE{lH?pIr%GYWqVBbjuJ zFUfZ@K=HvuQ41A=VR3_$b?WRH8uEg{Xpo>^@A~r}CN_!w!4f5cDn(9pi3utTxe>m- z9{DVLB>QnIvGmHC%AWKD_fu6XfrMfBx4*;HalBdtYKI{$<(Q`Bc8RyX2S-AmZyzt; zd^jOMcS=Z={XKp<470#ZsZU3^9bqxli1Z%7SVsyJj*M3t0+=--)M7v4^0Bxg!8rtNtYDlRg4br3HpM-3#&O+c@JoFH& zT?PyFWac&>56AjS59U5j#Z2~tO*yt(`P5!m*h;iNk!nrQU>-du0T-y@0>Kkgz*>(` z8~3V&A_Lm;4O7P1mGo1-bOXha*bHW2Evf&$+Vb# zqLCw#^n*^NwBwwIne^?O-DQMmcFBeux%LjbgyKhLEY|Qye*f{~rA?pfO$5JARKc0v zUTMx5Uoy9bq()(vW+Pqd9TBww>Al7)FOFspt)5@Y!-R z=At+c5i=A}<$mhasf8*1fmc2hx-{oIuK4rQh&nzsu>O0-%lL7!y4Ft36MMg_kQd!I z7NX)7yJa!ELAPoz)`NCBp0#?AYlu1;p<})tt}<^-F2bQ(G7M%A3#|1;9VK9kc^yfh z`Svf0J~*(AueRE*9+k91Z~IC9_iX)>04A!Y-wUUE$GNicCY$=t7W%*aiR1U|bP?@8 z7<6`YJmX^h#k}miBjXmR3A)sdA1lWEaA@bh_iXUtGq3^jp5T(E^hDWcyY^i{ONeFz~|f(b=T_O=IqH4 z7X|l*hL@KxJOiak%}e_FIGn|KF4dVYdu+N}C*W2}ZW+-Zpt@9ycjInUTHu|;otO=R zE_7GI_k~~DPiXpn-qPw`qxEo26sxZ>9o#ssuad6Hu!=b3HFZp=w#c!9mNj@WS6^-Q z!-U(dQ*%19RR`W_AEj-wiiM&P>HqE932(+@Cu1-oq_g~}@3dT^A8X@G@G4am9~!nEO&Mjc;&@!fg$a6R%2m!X*Y@#xs~PzYHz9X;MkKyMGDp_BH00p6UELss zeeH_%*tG3uKmhoMO5iA{=QrUigEZO(0q5r*iM?PsgkKtyteb^5Si z&G{Bh1g9`z^mtUw*fU-%V}r39lRP<@e=yMz@Pe3mPyJM4{9b-YDxx;iRDhajZ9-)r z=4&JM)l&!X=N6hsm~exeUhdPMWGerR{CPT;99B*#6@oX;r3PNbhIRb9x!KBhA1pS4OPS(^^e9NLtssh zO;)wLBILt4y6ny|*-yvbY_g!-j?L^)iA+RpZ-{Msj?b1W7@OKaY}f0%mQ8m_j%;P; z=S|KGW;o~*jdpikX4$7bxB7%vm|`Hz$fE&+MsIXPdCIR zhh9E2jTC7JRjgcfELlpRR38&Ueu$l6uhkJJe#>%sl1vBRmtB_iTE=XY6JGY`$`^NK z1kQTwdZ+!*{Sy7oL8x+Js}k(A=xbMRmHnnU=udpI46mcR&E&X|in;*XbX#?$tyYP- z(#dtyU@Lo$f?1z6GBA*zDUFkkQ$z`<-n0`rF^C>3U#O&zM?!wQuHOTWJDUerji*I^ z|9(w@+qS=}qL9T}NA#E1tGXPeWIaY9K>2aYiSssC^nP_v4ZNbf_$C=Px&?4yIuP{k zM!Iwgdv(&Ld+m{B749UhH92X0x{zo#7S>^2<*S@sHhsfvy=q4 zvAZ<0iiIoO^kx6RvP7G*$7bm6k5zp95L#OZQml|bvO2g za)V2z?2l&R7*v5u&I<>l+@GDMdl`SV?*n-W&8S#cBc?UmfIDW!d8~YJiZLr9A#n|Q zlSPi}#mg1TtvWG;_oCT&0TuVz6;;pV4rAFL6WWKA$NHogRURKcejL7l^ZQ7t$pWA5 za+3m_Cz_YD$MattKY!@U%Uh5CmV09O5(kKyg>B9^BF-fI4_Ei8uif8Y8`*`f(x%I= zXeoYh`wyfhu#|yowEw`$29ED7|Kt7~W4CQ!{J|ji&t{Gobk4z>dC%s?ta5&^qS`*} zZin{aot&YTcTQWxuy8Z1#RdSwMK1*>v?^c?E?3DINbE$I#_n$8WL6DsLv%`2F~N+e z*L}Pb)iHTB<=oX2gYCgbAnCxnaYc$`fYKql8NAyT^l(d>Q@4wll$(YW$z`mgXjBQ9 z%2&P@-3CmiZB^Qg)^W63e3^S06GC^p-qhW?x4+?}n?sxO0jzdUpglmcy6*0U+{po9 zi5fuC#@8wAiL!p^Wh14auX|7;!V+?+xnP2K_Pjj)?X~tfJ$c8L5wr0}*{&(QCCjbl z&J&<$7tDPF6%`|>&He=5MnIDGj+!VySSY%3#L%CF$Zx=KyHB(xRPFu5byn`__6RkW zQjsG${N3%I=l23=IaPap!v&mL%}-44_q)@y z-DO_cCM7rdVGV9#baYh7c_?We5th8mVqt@qyBO1+D#YNMoFnBEiGHgYNa2!=J}Cq* z2)MeMsg3rF@L_AJagG>KVda-Kmr?ZQsHms{VGB+>=C?D`&5k~UIXfCC>*+UC1ZZh0 z8NacZgAU*O9zGEnXRo&P!e^;}LBI8F;8BsVQC7Xen1i}>M@-u~qG(5SqL0Yo;axn@ zU}}*^@A$xqTjE_6sjq&`{sfuQNLI@0`}Y_bt51-;*A0xkKjybbpDb`gOTAGax=`9l z!^$=G>7`JbuOPiYruFb7aoLsdE?)m4`F8qsvUrm8Hp7b#1S;Nj+>32EOnN^zLznyO zei`ki06i#8R?6zFddFn&=5W$(sS9_x(7exYKRH?A18{N3Aih*{%|9r%6TGmTjBgU4 z+*j7uxz9R7qjBpX-}HYn!u4yub{W}!U$dEzdl{&#%!%g4ZaQ~SAv8VF?_wdcEKclw zc6Rn%t6Ipf-8M26EiqS3td@^c*yIce%Hgmc$na`-7%8TGzD@X$qs!~I>Sm`$f|T>! zKi!Z+itKqg2!sT1)&ZU}$9*ogYl+2T-7RZOQEykBsZy}$@Jx{ay3@4MDJPHWem-!}HtWD3{q&hbOGk5i5 zna-U1^jJm6GWURjo>tP`4@M7|-q)V$KwoVk3x~Nd!!7YXLB)f{x1ChP-Km@AXi1b& z6_kIM!De7EKf$&jtjb)GH<|g6K01f;;q`kuL*TTP*cjcE+p5&ITF-^#;7z|@IxD^8 zl`Y|-;8_KDAzO~&ZanX#^CAogaXLhlE6IX;f{lMpT+b6UboA}{#Nt=eCeH`LuPaMgu$1W83 zbc9GH6%{>hU-jUeV9juXO}#HFDiCx7Tr|vHIOdo&as{JsUQuy$HotY{sxn;hIwvU< zPMmC>Ng~@wxbG#tt94N$SJkpDP{_Qab2j#EtB(kSYE^mMRrZUa&BRCeO_h=aWwZ;S z_KJBEz(`{{l_q+~&x@j3tFi*Apao2IqyuYtnHTUPZ#5ehCY2l((PxF0O$IeO^lV8k zXP?>bb=2b*GrRI@_nXj($gm-Pk&k_^#XXOty6w3?@I3mTq{!L8#KxzY7ENoe?Sf0} zXXwI&F2$h>t@2YEozdHF%dn0NMMMdN_9k8k+@9=O7-Z)-(5jkddi=BOHaW`x4F<@nyit%IavhE!w=&W&ox=Uk<-sVf2`_8n}3RR6u-l*&69#z{{A0m@q(wA?n+|Ufd2|&{{vmZ)Ri>D zH@4U2eLE3D7qCV+i@DO>>d~bKLayF2d6$`>sC;4SoZ^jyXt-xk>&f$VOI+ONMmKoB z7OI*a|G}7}i>kjOR?PEzPJc^ZmU}2IExiar`(^^V)iuvaG(u{DBX1GPhqg+%9wArh zZ86vCxb@YKCqk1RJ9l~Y_v(pXG$+|tU`ZPOvFGN(X&)#E?+^>h=aCt{Y2QQX1E4VqP?>-j3K$u zlcV;Z9^S%f1G^GQ%q^g$t2$%_da9Myqt53n3qIZv>vk#w9jx@b3F57f@6NU z(+CiiW?x|7JJ@j?cU0QppCGL)4law$QrIWjDoA&;-C|c_#iUHW3_E%_Db%#XV2j&>} zVAr5bg;%fjfvV;KnN8f^Gw6E=ptLVNfn1?omJ4Yn%6Yp^DjCa*k$=gS3J@F>@=I1NogU!pOuVBz#Sv z`SAvfbb#jHJMACmo=)C6)l%3BIO8Xc7tVL3M@77Tom7mIT`dF9Gt9UFhb=H;uOLy9 za7hObGiTL7;omadH0=P%!Qf5YoJ0fgXYEW}Lr+LZO6tedG&%?dUiq5+tqy?PaIeq1 z*7oPdX$8xu=oW)m)1TnUC@ZTNch%JN8g$*wB_bkvw*A7p*gdJ2PV8Mu{ge$$gbuyc zhs=xd9<9nsa|H$yU2CCZ2`p>rdqb-@AH7z`czMVDOz4Urd@17;9+uWZiDkskGVpsN zje=wQ?<31P4uTP=mc218ph_LmpmN&d<@2TWLc7NkM$ehKwP1#mdFHhM0t){wbpla& zyjPUG;Qh>9rs*4UpK@B4>@&PuS$TOUF0QrlU_(?$a@$<$=rP%;`{!1>YPoWrjQ#C}#^OOhuXe7!kX4l} zz!Bm&92z7t7_%|zN2ZG3Y~67-jMLNCe=|{3bT891ZbPEIeK0ZBW_`c|!I8gwdZ&N8 zwpx53js%vaH3zmn*KST)cb&#KWzXoyt0A%cp<%LR+lf`{7YQ299%NTR&c$RX(eB87 zm*GGm&%+mlp3WLUe%iFBGmhoG`+WGBGiTrvYxF*IbG^;j!=t*;lP)GZ{?8pDbf5Io zGMR~$D)ZdU99b+YDJ(heKaddN}_%U)pg< zv$ml8kPd0Hynl9{!n5OS!37`p#z{lRsrII_%P_^rgrTgBNS>NG765hsBV;ONJP8%H z+D51BL{H%_+5r?RC4D*E_uk%-@bn$1y#=rRq7uOL$P=0g4Jn-S0(f@abo)?_@hKAPDP4WN6)ARa# zcRSdA)q*NR42p>M+endlPgVcL#V@7C2IdJj@Uvyv6W69g$C}i3cS9%cD=g`3^YU{L z$OTQ1Pe1@-Yc75=8$tdTGKkIIe9!*qt$RN#;$&X{Fd@VFu9D$Al}!MOgvMu<15I_% zSM0!nAAS$jL5b>5S0t8hKYC=Uyqp6>2nyDzeeTz%gM5KQkLfITtmRoZ0T);`=#t6N z7a7^U#7q*sR+9b4)E)G%QF(0HZXmLMvj!1GSu__u!7c;+8n|@4_a*QNj0|f@`~;aX zjD*71dPFj+{R24o0*;Odqe|HN6C9fzRo32>CWJC6Y~!~#R{)JWC;te{ zSp+}2WjwkkCb0_-4Ro#jA2)F%-iU8}T!LyVIW{s4-mNx?UfZ1Tqe5Kow@tA();to| zVEl^9QiGH%l;Bs)4aTo%)!#9W8vB;3dhVQmdZM>Ty@bze6r&#NdD!x$(;Gg zEWB7&BQ|pc9B@!*M6W$)*3qQT1xherc*`vllc|tX2q+Mpgp7z0T5TA7Q^ireTJUkvcJGZT0lHi){%jfY~^VV_av{qnD z$!3F41g*=!^Jf!s+;qN7hQ*3tsK)5RrJVCHmRZX0=l$RQL$X*~%>GaA?^xps`zDY& zqlQ1;u6<5qM_zM$%RWA%l(Cvu=gQ%9>INi)RYe9=&CJPN`8AKZ|Hu@4bpFL!BDLV>IizP482xS~%)DDZJNMV;Y)EigZ68*Fz}zk8w0xrWi+d)C0` z*a`k(UHq98tQI_W#mjJ@aL*hzjS378k6{V&2{e;v5Ho5Z`MQfqUD(FKFNZ!0gP`2E z<+mu2dAQiA`K+al>jU*6J^Se)VJJ^o*;e9>&&FM=T+dmVd`<9ke)#msUq=aompXr( z$~wNVCa$soOO?k70dtTr%$b@lLV%$9OP~!GgZC>E#gHbi-i+A6%f<@C9pLZa zH8B`GidKnX_$1NxbX`l{9;?9-gIZPA#gGGiJQAMH?dDo5ANq<}8w&c<1M-AV=aN>> z|0Y*XJtoXd#QV|XC_&n7whr0XFufn;>UU*siO%&NUV39LUz(;ULK zki?+!^mHLIb-Y-uiDMv#ZC

SCQ{XTS3LigPodXW3X?JvSpjghP|+Mt4*!UBK1qAXzsEgtoQ^Pb==x2xHLv7Oksio-9O_ zj|zD#%D)^(*y>>3QVr4kun1qAhWt%(v%}T;?m3Nd}2!bz%}GHYi;5BP4d(^=I3i^ z7QEg|$lJhR=rOzdP6oy;*%d>R>16HMi-K-1nwpw!-%dP#-%!LUTl_N#TbP9 zY;Q=5Y0;M_tua9%t=0+4a>oM#0(y%Pk_Ined%6)H&vK? zWW8k=!&OjNNL#~U6D8BJ?tjZ}ou;rCv^FN|5sP!n-8c;Qg!zK6KAFWpEB-m}7dY*4 zoa0I6R4xgjV&KwNl<`^A0nO)E@toI0V)+o%BdM~b-#Kkm}9pk8%=TZj}aZ8$-j)ahUUYpEt6DnvQU0kE$6jaVj47sXi)ctYgx6iJ0>MwtB<#`Um znCB=S&vA!(XS1;-i;;E+ZeE)5UpoVH9t9%k%>H$=Xt_o4`WloUL&bM?4_4_kaW%=6 zmVsmwD%7k0GtOx7$VMcP?Z`>K9XsKAsk+4#dBT?gq^6}(xOon}_I(iKRo(UJ9nMmJ$xju}%uK6JJ+%C; z+j^}`c_3^q}GWF}s$DE6qRqV?|zO-m3HVI_i;KIWF>hF$|gN^n$x#CDR7h zM#ZFN^yjR?eFTU8mkc%yeAN{(TNBYs`3sqmH@9$!`K+{8i7sLp--Q-A_L2~(#8)tu zabvs~zx?GH|0D3B8W%oEO&?qayS>Fmp3%sXka_56xXOO$mejGCt2j@vHmfmuh~25- z>4k;+*lsO`RH{^k;s+e8C+aGDV;damI|al=ex^jIhXzY}b$N)Pe465(ir``I=CIv7 z87hN;_GBOND~F`pPHcN_kcfWzKyMIkqvFvP-a7`@S)#ilq<&1qtPdwik1I2aVuchd z*l6%d5WS)hAjT-sx+aFcz7YiyVxsTTN$iyEfoHl0;aHeM1uIB! zBofOy4TnF-^z`TTy|Mp!i;T?Oj`=Nhnxb8);M{#K3EP6Lt!;H%+gl2w&KIMg-PqLR zvZyKh18lk0ZJ4x8T(Vw^V^z%k-m^GgqRK)($!YzQBW&tMRg5RTAW>?Wno7IR|K4Y8 z!=MRSJm-~FLP#a}u-81q(7!`qZr_jIUgLg3$odBHLa^g$0b=27YzFxamh2a7!_rK- zT`_eARoj2T9-tGi;XxmDZvMj!1CUy%IQ#7H_3HDL;bd310gW`I55dh#@3CoLF@bm! zD(h+by-C8ml<w%{l9Xu@AsGKvh3gb-Fh;wd|TV& zMvzVUCZ1EZ72V#VgPVu)1fJbGQF3Zt`~`8qXzqH;TPjIAzcT){+}(k{Fii^2&>9Yw zaCvt>oOPZ)th&;2r=;zxwh5QNn~ItdPZQo^aD!*przP1}Ugwf#W?YgOTxKO8@81+| zt4&-X@!LfpNQ=K#L$3N-@J;%L)bBYUns8me%#pG7nk2|Cm{M7(cGj?P6aSWza zz%lI??~aGbmxAEP_(n7`^AmQW4M(W1qG7+%5JbFyrtlAWqx{rJUucP`I8ld!!8QR? z;&ABEIN^1l2^F^dzGK_CP#BWwVy7u42;@qyBIr5K*OJ*T$bNSjCAJr*UFHfe(wfS4 z6Qtq^>#u(*DW&c;q^7ITnrl^?5c|iF=8Og{uhnzjb-z_2IK6Q-5tyeLxbaCCVk5zE zXfP_*F5v2}OC>7d>U$ss?n+P=g$pUph6a~@PK{);LVVlPb5G2z>zYGx#KqLtK#=@5~TpRQC>)>Ps4(5onc@qf13pJwI_5WCZpAy~V z69e|>D{bPKR0w&+m8)l{4f?3nH$=d8J?OXpNyIN5(_eXZ2%$CT+R_asHkKIm(yL5_ z1zaeDg6IVoK2L-h+*DVdD-&07hd~(u|K>F1*sn}O8Zr5ASL&@6zRqg_WDM1K{?>&z zsYX)V*CB|Z=Z(s?)fesuT|cO39`iTajosOpBx`@E32lAW9?04h{Q0bpRV#L53a+1b zg};7A9`nD!ZxFxNR%+9u>OWj{KUw=9^I6*ld@W8{mo{Ryz59y#P#t*u@MphKlPAJ; z+)mqH9+AKHz*_Uzy=>!{PW_{IsJ4BaQ97|AT-Cpl+dmvinLecTeK+!NRXeM?`~y*N zvvkIrRK`uj3=bbF$=`M3=wAo+1-b1KRdlF!sTZH2Dbv5EBT13xDBd@u-y4E?~gnlQLqAI!blWa$2eJkJDq=2YRF-N|+j=5rK1+r=`ht^GA z+22t2owby#5ryHW;3eRi)dZ`WU1FqhK7$klt!m)p72s zrj9lrvwzEF6)2wTOvOGkSInp}-)>bl+iKmE<4aqr#vXH&zn~Qyv`uJkgD>!VLqUVI z&Fc}Mrp%Jb7f`ObpFeMg`9+%R7J??p&leMX_F^vQ<+ zKBMp4)S}ozAC7|!@|B?95R>{VSp5}vDqCC~U=F6zXeptFf??QKEbWtRqIpjA4?2uT zjzAFe;GE}poS%xA0FBQ<+RBG{YT% zmKlBf2Fiwo2p`IKSX>ve+0J3wXh(CoAXBfreQEUbX5|=_kn0DRLmBW^_kMi zahSS8@G`FS-Z#k1_85uw*ig-yf0Pg$SOK?Ef5oa{H!4ZZKE?q=4tUg8btBAKU) zM+ZEqG4(YqWiQ!ng1JkKJueXPgKc#+JB?+rm)e#I!Dp9`zDUvAVvFY6^pz`TV;|0Y zF3Wqa^byA!0CJShz)__qqjlAydgcQIiF?DO#4x_o6liwqr$3X=@f+wbxDdD}o8Rw)?DZk3mM}*B@nW^7WoM={#^n=6c?paWD0Ajv6B(!m>VG+@G<& zwmMw>tiK;xf!-Y(t*d7D3=L^~(&%_j?k(i17^sM!QX*@-?_Ew>w&*(uD8mP2aJUrw#-Ep6<&Aw3s^t0Zp8c8U zFYSV|8<@(~iE0h!OGJBc^-E(3!KF+wv_VrWP`yTX2z?^b&UK$!2#=!aplfDoYeaEJ@y`I+L zur9u${-qe7!E4Sa&v6;8Q?_n0e!c9ho^1^dy$2ATgGLaC_yaetV=xkOVr8(m3e5wv z7X6_b;xsBi4ga+25qiZp9Q>I~#=2$a_!-F0YrvG@aJ98h@kj7NOTKlZF2?t4Z$~L{ zhPQ-%3|2fwakcR1R#86i^20%34VN&BOp#k3AfE4N{*>dr)8RoKE;8+#ocXHTQ_(^* z+WR6~(S@|d9zAoDFca^%wv}gOgCaXyM{UBcg}An9t+b&YQis9YrqS+*+dZG67}GUB zp@w1mbhKD|J>9i%Kk>A@-o%%O8OLvLXT2B}s2E3GM5F)GMl*jL7&&nI-1TnqRP)5a zNEL0)jgRcpK1Kjo29&`(4jpG!amD?(|P;dhakjdNIc(%q<9N!4wA`~@`nJ0ER*lL za(b`EVR~tD)uCXQzcm1i1_a!Nh3!yg3DL~XXn{pyHYVG?cVOU6Xy{XY?@qXm|Dkp- zoBmSm0HGNKS!D{+$S4dPBiRS*??4|9Tn<0rJsTgm2l3WZdQ9J2zx;T1hg@BN>bcOC z6bYnCGuJtv&GJSS%q*1p>@}2<*!Mbq(HxiBAkEc5Ant;H<;N+Dpq&c!6HwGtrTx)> zE@`+r{j26`-z{ypT7t86Jj;m*<_WcTZDDB6HPNBreNpDOCRa2{%(b~)IrTG^Lf8$n z#{2q|GlDM(5^1Vpg0cT$koa08@5{09@_b%wmgDptW_3Dd@Hwhox=WAPh3f_^Oxcv^ zAHc$>J-G0T{h_YB3meA%Te6(5xw~aW+2Cuv$Lb?u+s*f>2@6SItt+W+SNMuf$vAzN zJd`z)VO`Y5YmYNeK86+89uoO(7jyeq63V{mgGtuPYQwvXD(RIoRP3!2JNik{51ySi zk@xa_BnG<0>(HgA2h#i}@9y29^6rL;_!}B(4Vo?~c%0;($UOkpsP1tjwe@#|E-lIZ zc;uq1`x@xyXAR>@3V%xK-P(V$_Q#(sW+lC)u0qhXytO~%&t7J7Croeuhe)g@&d&?f zw=b3FI@{Y5Ltg;v`#Y7Y1ihsPCi}s|0uGtBErL{|TTvo4B;P3j<+Vv+87wuMBxR|=E^lZUo zl+`5WE&J5!>TEMuvQm;^!n0q26t_oTFNZ-9>#ao)+?F+l{6pO{$!(_RbLltX;kO9y z0+?nFc)Y7Vv0b511#)cKANO66idc+3`2oble33lp8*-3xV7Gc8GFa?%RP3^j4sQ?6 zG`h$SQ01b~ao6~@r0#JCq)Z)G-YA*5=kL-q(mvU`W+f}h$-SqS`|VGAlJaU?LizmR zaBeTj$lpz8n@#5JzjQ;N2@>S`spk^n<5#|D6Fg-8x)QF-@y~Gz>d{O8jcW8hfio+} zguJ6I+7C6jih)^eSrfO767HV-VjXH{LNLC#9#q8lDMaL6Lb!dv=`cs0Dbf|Avh~Yb z%evK{R`2P*F34Q|?K z$EJm(>Zs&Av*Y=1%(jMa5;pLsfF|*fq##z`kg?zR@HvAS3;mdcaG*kGnwM|m+V$od zFeahwZmmxaM@U4#ypiP0%w_`})55Gykk!V=$17R~%x21g#Gahhf}}Xnmd1>$e7!8{ zK`;y26OQn^$;d|HWoFD;?&d4P!qU#o^&Yzc*&JTgCIv8w+4jc)>3NH+Co8aI$(&LR zvdgbMkmNWC{Vp%qFcN75n-f1S{}*ZL{YSfCt+bC(iSefmq*J1;qb$*)qJHe#bWC1W z(n?q9qzZ6;QtiaP;PNzVIt5{duh-m@`V>aQ<=w5PROE+R4pg4tv*lr(oqJiNdrd3j z@^-sDhm*x4r*q~@nxwd`9Bs^j6`7py@*ukV_z zbLZTEc};HS&?XgWP^4KR@=>7z&W+SZX~zGqh6RqeT=4wh5bBxR*CDN zaHW~43gcqO)Zqk9Pb@!Z;qYNB=ZXBoeSzkSdBNP6wDKojoEN|(dR2Rf^M2|(F%%cwm1KC_bHXuT!> z^?QLZfhOnr7>`H_$B!Rx?<7U;M53IW(v&Yh zWe>TT|JbwR^_DI!sh46bLI#8s6nI|z*G~!lIMq*Ux>j3oa&J;iGC#+a9xxF*c^^m;4TU8sva zgH_MDs%7Tr{G~iQQMb+D-pua$@K3&J2Uc?0jPP@O^t7VN8~$^zit?sRufY7%Ek>sW zJBYP*0W0R__`AMMMaLWukd-$P-JB=e4sn`u;68lkyk*f-Z1JjUp`*3+F+fD@HjU;pJuQ@-VwC?e}62_|NX3cwvo8P`|A>8R(5 zOUAU24ot!D8(oE;?o%t~dgSIL+`86u2GjaSaYx}0f5%7l6y2DF7R*O_hs}qRwcwP+ zx*C7oZtHe7=zvw_KV!V4>iCUu=`9L{j#hW`CDQ(j$yCzc;NK%?j>NW=HDpSL`7YJ) z9e@#D&)L_vnoGv2-$>o|%*}A$J>2~e000AzvBAUkus@8#8QuluQCIJ)qGLMy?XKo# ztbXIn%rT}!H$UB9Dz@d{>*jyX<)7jI8)YfdE$)nC>58Pk@Td{7czB)t3?U1}QvLo9 zn)lal&7G&`vGXd;Hi$`c0d!gPV8scm_S;%24Uem@f7Ivs*g91ncRP;O=v3rh8U1u!He1q00d1lsddW`tHr$$lpTZ3TNdU_n zVyp^NI)LiAE966RSy^Lblus_$bNvmajlQ4Ny?S^z*y}I-aaasSk_VT@P!|2`L>Cb00^H#;?b{u_!++$IUEK~AM z^f0;gyYch?21bgu8XJNlyQ`~948nUR`vD9~yM1{Hc)afe{?pa_cZ2-0ce`9c?DTdPE1tfN^8_;wGH(nIkFITUO0h^%jfgF{jYqjvYymp9&sYMdnYIx}MV0as0LF@ZTv##>e%)G~3MEa%Zn-^nbZwOHY2(Wg}OfCp5_Y|zNr;&=RxNx#ef4{{+*R{2`RI0h#{KRLJWCQ)$ z^*Vrn{kL)s-uA<3fU(;=X|sfMt2M!0Pf&aeQ3^ht=!CA?@2hj>M?3Fmh?;4sTvI#a zwta9fd4ENAQ2dVD!CA#i5JY6E}*7BEH{Cp16a!txGQeXxKjr4ga7-84Tg<(pp_%r-k2KZ3 zebyXZ)WyUHwkgU@PH?uUsTa~x=E_TH3aZnqNE&7tQ1*pve?)IlN5$+6R22-vH)VMXQ#%>NMf z^#1y&!Yum1-BlNJ0J|bw26?pSWbE;Ugo>hZds0S|#=w;KBD^o#{6#%{8z{3+xILe8 z8=p;N@y?N)2rV5SJdV^E+_O&R# z|9l|My_l$blL?C`&|O^D_+wa}MTvQ6FCA_oH`|5fl@_4Udth$uG^B@NEpH9jg#x3m zji52uf774@TQrkH^xM)~%X{l+J;BN+R0`QutmS`sM~mGQ<}3)eaBXLT+ob|%nRtxP zk7}Y=iea7QZT6u+_M?PWCR67=Cl9f?peLSf{sa z&iTAdx{B^KSz8b=k5(T}w%L+M)5gnbYNfr`xcHw(<_*>VB=3HIGUP*vA#N*;xfpGm zYRcsP*kRtK()1C_@^X)Ml;gmEx<@ma|A%|@VA38q<8(ld02<}v{z(w-wvD)rqN{B4(+n~v{jX-xF{c?>@IRT`{7XP>c``Ja<(tP$ zn9NWJhcx2C+!|X$ZO2EQ5>h52lif^F7DdSi28b&GyW^=o0m><_fR5JR-dMDh(G(h0 z0k3|4<-}NeVsrfBOKR~AT(UfWzVRuX8<5B#$Gkto+z0x$7$f$GR}AQ@K=J1@15z_Q&$$0_ zxwQ2MwAh^zvbMqz>0S@H$X{bz^r-6GI;w`^y$u_({9knbVVMimJXyBg#OC1%4ELr^ zUJouqfv~EbkS_!@Mw}dVh?ow~9HtE`lhP`I({|N_PZ6eRqei*%pX^cg$|@TuwO13} z+^!KdFApk|-OJT8<{u8obcEel27isH^R_hBS947|jgkV$CZNK+Gl~?(;ge~qYlm%ynMhq1ZwIrI^gc3$PCQ)q>S(dliB7g=^wz=Uf$>^%~ zBj|XjG{#j`RbTRg)OP+|{%W86BHk7Ljm-MJ$nfz&cGCZ-;KCkQ9m(W#J_08IfATtK zSN+G)s)@sGJBMem+wDlvtLn}QYEe^Z?z|=^4>EV!TeDzDcb)_(`b-n)rXZYZQLoj zC^4rz*%N2cILOAMUGiGTkl9}%1A~u$BL@FVxCocIAArEP5w1q|`?(+5gIr5AQHb&T zDNOIs7=?vm%W0~PlrYXy)s_px9K-7WM&1{MpaAdfsouXVel>+85EpPaeeQ*>fpuwn zvpkQPfGSl+hMr$7qIrmoqj=R;gU#G}BtltLd6Bsh@GBYJ&Syh#L;r@fB?2Tt#o*xf z1nP&YaI`C|D>g_VNH<}W&n8~}&0jp-BJwULPlB#rX1)21xomt@9XuyUBg%E=sVPJQ zE|cAC7k2VwwR~)F1D^Z)+dTZoo2o20kw^(V_d4{w9bDciI3#<&En%KG_R~HvBL)aV zdIJ4LdnE}QZTIvFjORhBf?TT*E27%XT1mK)u}r-?&W^evx4B4wlVY@spYY$&6)J1*4lAnGt0d%{eL?%nrGp zxNHnvrNLBZ?y6!5&00#QR%-g)Er(9g3&}rR4V|<;GWeg#5o8Y8ucCuM6u1YtU0(Z- z*pJ=v>uvnO?yLinubF!jr=}OT{PTmTNBrxh-4*lT(P!18TfKL^XI6)rUR9WXnok^$ z`5e6k$VG7$<~EIL`=s_Vw=)sVi)@tbmG?Hk4Oc%nSry9rM}fyA^XG2SWm`2?1YRnQ zTtRZ6YTqp%U^X8dv%JV0ud*BC&fZu(qri3a_C|_%>#FC1E$~wcQO$qmI&9gpyTu1v zy`okIvm2)T_@Gh{Dxu&qY$y3+W{4v^5vbr@Y+5RQTg4bjqh`OEgJTxU4Y<^2?mhAA{O@W)?1G#mw!=6$ zd(vY5KUCND z-8OPEvxi&toPT<4R*o{`bq+w%eP;{he!tlBfj<*Q(t!3q{44L@IZTIw=s{sZmV5JE zY0yglxZ97`3T9s02dOqTqNlM@zS=Mt;iO~jHPOPQ-%a-OG0(S)`|MJ<$p0S{!axaJ`sC4eDm4lkM7xhCE>%PskwprLBQ}?zkYMYr3bdWk@zvjA z9C(XP!B5w~XO3YO?cR;NHpXejWc&BWn`d8M&W@cib!h!epJcw7O(e64YgZdjQ~(wh ztN|*EdPx6f+x_=n_68$@s74H2WYdHa$rO6}N9EG@?*QLA#F?jVu-t0w5=pLYA2vTM zM8k(@emrLDeXy&l?EL^7X`3tY*1t))|BqOY5!qB=pG0u)ik)UGXY;u!TBt}b-c0#I z6~mA22R&+lFXQT+7*w%>`k9lQfl_C#`N8LZv{C*~0ozs{*mu2}dHX2sLB+BkqTI8w z_G-On2C8UU4>Z^{O-b6s9crwU^pdR&5OF;xTiL(+pnb#~sb-Yx12>mdFqJV!*uOWS zMfna5Tjy}cyS@$t-Z+|B6#o;Gzc1F;{Pbt8WbYC*?i4442iD*Su7i?9jb%SdP8Myv z6hQ4-E}oMDiZ0HbmVGyYo&1w|(i78CG8MSqt--&qFByx$PBS)xlvCNh;#N>%jJdP3 z*P@%hJq#nH6A?#N<$g2L7ZnMaaj(&Fe)ls?XF~t+KSC~@xT@xT+ZEPCCQipY-|z^} z;H_x8vi;`x^KR3q_P58uy`tLVKEx%A4dG)L4UXOG?y#=93*B$Z(L zVXmSlqv%8bZN~K9U;1DDz?z@PS9p|0JUv@@YY8)@)uZ=lAS+HtM&D%|!PN@YE0YkK zwP~xZN4L5V@6RyCjdGIL$-MiWSi1w;UH%Aa>wfbe73(&-F*PhiD((Vbi+t8GtEI6_ zrb@|Pfyt051>#ZW;@UCHsMvor-Xc7E;#Z4*CsDruB??80Du*gY$X*Mg28xEAimASV z=|{A@!pbz*N7dp^`ul_QwekTUJr=>W>cNDi&y=RQ$i8CHRT`zt;*#w@ z-UYqrD(5Qzb^ZXPi8Y>O`(JoRTQ8#((b=vMV& zUP#p_?1!9ri)M-H23yS4x7@Azzhs^N_6$*(`}*?1Hq7bBc7eJWOLS5V^IX9z`{c*R zeWPcLVQBl&Lbax)ZUSg!v}d1k%mWuYi~ciB{KgK2-Io8jZN40ena#zWM}D%yk3Zth zRx!yOQ-f~KQIpkA@s98@lb;bI9TLHeq=DBf6yYS+^%a8pe{9W8!Q5-N<1_}!e02#i zqrcE^MVkpM6j%#6HgG)rzz0LGXpD$g zfF))*7{L(T(I3b3hFQdgsM0G^Y|vEK^f(sP!+IYt?+ zCfcBCi11R(Jn`Q(Elr^-pbxZ~6{dZV03FB(i8@R+dPS*aqGn{^$Nu^@F zm1g?Gg7lAlLUiA*ls5%sO6L3>jh^oQEy$A+7xN}uNJO_g)y}T^8lAdd`Me}5447mk+H%^CK zZcFt*L_2@TIydDt6?6t@;8Q-Ev<1fUKBc8hL7}0W4VrZLV!H&P)Er@7TjPMroAn?M zN>1XPnwr%#p2ej!;d0^&Uk_lSK+Un&p}#zZBiVMZr#7G%L0}JLzuCyFdBDFno&!1U zO#DDH=wN%$732Qr=~PRJlV~TGg5h^mlAbTtz?H&&XAMoj)+s%VUA3I^AEb%3%Z8nc zX`DSV;n{Gw|9w0j_wV`UQ+9KE%wGr|u=x{`K~xEKLB6@{L@@tZ{l~9Qm+Y$+Yq_8Tv7K)EZp76bw$=LOcKM!U!bD)k8V zH!B3BqGd~S(80!go*V=?J~&}X@txwLcw0z@Kis@m2wFM(da@y9eoM4T+Z_l5iqO!| zw6wG!z?V@7%6mI#ui?+&a@af7=!^-dQ+FXmt1n**{1O&9PM!ojHbU?TTfKN6jt+@;)sGn5f<^a?#cv2UsS+&7y`8{;n2uKMaep=H3?HJAg0g}6=-Hq>=j@_ z`^97TIaGDax8w1fZ{R#}rW=}=+`xB|Y#neF34Sd`A)!Am@>ts2L(0Lmk2$Ku4KNl9 zj9!t>{IRmPH?*RX$?+Kfk))_+hiKW+ZE0M0Qhj+s)HGJav2${C|4tw8u8)seD2l0)_GKVh7(DV!Vua2xB)91V12?X7x@+RKbd`5ekIg$T=QC zL=)KPx$OV=$b9k+$8AP9`)X_zeB?yEKI~ zGp(;r+Gvigp458ebMRUxVWlU?Po9cr8PqffGumTL{+?o=F-SqD9$?Fh&vjAVIc9Ub zb|ShaCfPA|yrzlwdE_aI>~e0(Z!%koXumh-4R3V5FrH?Pkx zT6t`A%C@+`bteKR6>h_Av-R5LU|MfSh-+DcFlIKZS=idt;NriVh#$jJgi+60qsYT1 zH7{A82|q@NXDIQ=$E{kC4-2SK>BzrC?g*@2q7iSGe?t2xpL4c=_g&_bW|dz}$=sR) zO*6>XCPWXNRZ!2SFLsc*cgvH6bTePiA$@p>SfN4>UfaL8$?UOLtNXO|Mw)5D#P2AU zoatKKuG^qkLOF*H_$e%KBuh-@;nS4hL{95e+x+M+*hr^uR?5>9@@0z6p8Y9C(iVZc zoL*I4)XKCYe^C|;NN9fS`TUXR^9Zg!vY~vo2(Xw5ZPPI zAPF{f)!i;;JGyPRc%+@<8QKIg^Ax;N$J_CE6ar(-SJr(LKd@4#(M!gegR}K%+FER% zD)2@*TfcwUf<98Rutf8vi#4yLnU&;$+J(kLYmd2jD4s4k+svc@4I8%(xx!9Dr@3P8 zZ&>JazqJpYPu7R)^)U<78j-QFu`e!T9xK(l;e@+9d37r4yA0 zdPWN7%fAyQNiL5zg#L`>_TyWU^ZOvY_gwe)4;K3J6&Lbcy{=-&=$R@XkMkMY9U$4V zd_=~59Y(HP_OYNR?mpKif^=xj93hsjh-<%)GjVAVZ6?4^<4>tw)?*w$^^fB!8Kc~4gC4@ z^_M)Q56qa4ZDZL?RcdMtO^xJ4u5AT$%iiDJyjCi4SBA^w%O4yZlx&NnjU4;)TGwRN zEe~(o`1vvJHg7M7Ydq!sxOY`j!l+hjg;&b;%mp?cSrJ({#kDt8NKH4*L>xS{E#9m< zZiL55EaADX^B5hyGsC^>(c{M-1`;`!A_q~DlZhhMNPl)HmDx*{>nA_P#ProLXM~x1 zcz8IRyoPwA5_ncu+j~OWr&*`2FkFcJT3X)M)YeiKSF<-X9{WKBAM5Da)&Q@ebX^_k zY#YP;b1MBk?eOsM>^mI1SBB(im@}gTR@sqI~rppsH7hoWkp zamKJ8wbX;drR9%n15v0#0l1b1MK<3|W@Z;c)^>|h_`yYgUvLYht*Z-V&&Wvfj-}()WZ%dE!vo4ilF$;o8wBK4-k5bk6yu3fe zJf5*Mk17SeYk#l~@*eYu9G?Q`b%&|C=46WXVX({)94SYE;)>b1ND|>%_!kDl>*FhG z!s|aZN5)GvcQgjU1x>v(_D>20fb}KGCJTLw9TwiCwD6u&Q&|fubN)ERV017CB4(^DkX#U&Biz-m;+7DiBP#)!fwQPaG=|3Qd~Pc zKKdSPNMN1q^1I_uOSVl`Ctv8^Y#!otTIbxJFl#?O+nJ}mvv>%J`t052 z{bYIaP2`elaZ&BO<}cmTcw313^__j#aIYAf+dJdQ_P`hhnOdt?q;u6>8&>q{Rirr7 zQV5W_CQI}L;3m@}pMUr#s{8uad_OwyeQj;vEDvMQHVZ-!qXT}XiYQp>VLIVQYF8m`)tS8MrB|zSXw|O&JwlOI1hDs*!d0Fy@ zc6s??YBP2)pz`qW43%|GUf3Q9Dr1*_jkCHq*~W1?+X`XI5Y`$RTCQ<8)D#pJ4%l4l zP9iDSmk{x~I_=a2_X^tW7cqZi+8&J=;?k(7ndB1;Ci^YQ7s{ZTFCe8Ejnhmu>&JAm zExG}HO?piakwNCf93QW-9mKRZqbQm{y^Uik zM#r8nbSgL0kW{JtK8Y)jSS1cd zE>x*%iIt(00hjMzzC)p5iZ*E-cFg`7cjOloBsfSm&t&|I^@hz9*=}!vGLC^+ujji5 z;+5_JCL(=b#y}1>9-en|G(GSGy750J=M!z}O<-q0MkiewA{~56Na!b{>)O#A^ES{r z_;Z#3DCL;U_e{PNNNWt+%HIl0yu3w%%vA0FF2L*3*;@L*wys{}rtnh@JuNK_f3%v- z_hl64U=(bk^`o!uq}gb#y_v?xDihi8ozC8v*NSP(kkQ@@U(7vrF>t;rFD!wQtvfnw zLiATy28>IwcpO1%`Uo%f`uYJ93X0gq&Nqn!t(h@R^`lwpw98rIUd5ueQ2tw!cv|Lf z9pN8QmR2LBMw(qo&r$CW`oV$4VNF5;ex=bw$NurgZ{dWp@07Zu!)H}d<(mVmIhM^! z3%A!1CxwOMQ`e*Gft#gk#aUDKOV2$$J^S{G2PQHo&k05TOphBwMJ5wN#uhW&Azz9O zRS-}AOe2=-OR|eukHwOgT8@4jC7h`tJB3}x7utH)HkrgRUuiN$SOr}~~(YAE-I@E6#4 zfh#OpM@I z1Xak^Od~-EIX{J?)`M6cH7@&I5dK3Mp{-%>Rf+YkG2EWbZh*Tv9q<5y z*`|!k($?kdK>#}JvB_+bT)16>c0*22#94XBX z9-29l?LNT?C5|w*`_t}vcNf94Wy3|MbbM_>J5xm8It z*3lWNH|M|MvW*9e?9OiPSzSKQ zpzOj3MRo2{_dz3zy_@}Vn24S6%g^+=1#pA`c?Jy{??m7t1U~*f2QGWS?l@(Xc^%fm^1*I+0 z`yo!r#YLP{f7SvvNP<7GQ#sj|3nFI0U!|6`a!?0~Z7daLvk26Z$q{|;z-|L8WiXu= z?0scKtWqn*p7>k&s-&0)47_d{kIi34wY%dn=Z=W?$E49zumj@DTNd zNXSk$=hn@`X&b4;pcLN_ChG`y&`PcZ3IpNCEMGd%ylOI9R#)K`!l6{xJFb(GY2P9J zbwA3}s-~N#p@GxEb<@Gkj_ZrRv-AWT&dWW@&A*P|EPU01eyDNc7^PA4gy`q$o_rrKzIP=s!F9voR(70g-|*+q8p(nXoVgydW)xk zY=^Nk9~?KDljaK5WI|g{tZiQXJ>2|ilAOcgQ6N724WH=td_D?WfvQ(K%DL{|PMl8M z14Kk7ts$*x6mH0U;WJm`h+_*I`!zF8Yk9LzsZ{Bb`*r_7lS=$4IfTt*3W9RJ+u90s z?g+EOqy0e;`mAI$0U1Ii9v@`0J)+%qkz#4FNVcwTbYF`B-czAy?npGS6NY6NifhkT9GH8FR`C=p}gwfzN-D>iiEYx72obCOp$dwBN-B}`s zC2+_!FX5IN=%fB*h|%nF`DCHdEfioKS~m=?m4K zG4%W5>1(^t$vKI^xdV;vv0I8UK9_1p?35CSfdUPC34D#Ew#UM1@O@^5LM1Av8G!64 zoFI$QSf}Q9MaUlafeU3N+N)GwPmbDte8MSp8+>arQ-X1Ob%tHM*bE0RqioE?5RzT$ z)UT4*Z1JHW1?-9Cm0Fhjyedu#59DaNQ!5+O_R#-RLF90^@-R;^--jQrm69iAA+bA5K&@%t?+|Rxy=OqZNrINl{is>a^-`Z5V#jT z$z&il+x;@Pe)OT>;!-&*-TrgNcXiGm%WdBDdctmd?lEk#=vNhe!oe>5>b@6;h%-!{ z?#xe$$Ku^r<_4_9HoGH4$D94F0eWs}a$O;klNl`MgwB6BnI`UIQBp4dqSGlPwkqH0 z`mFG!I>^Y~yqn*HApK1|a*LBOWF-JZbGgj4xE;(oYn`5CG^F)>N>SrjZNhd_g&?bF zk!JP%3GPaU@$-2~Wk17#yd9H7dkee{vz`85+$fo5TUKZ9!px57Sy_$6^je#qj0`R8 zBp^D)He06puvXMyHP6RGqwub!!|%kg1ew21oGeP0hcNI#uf97T6D%#IwXcNElxB!f z*cYiq9J8BG)9|SkDy8vMnasR)Lw*+5#r?Rfv=3a}dan*D|EQPYAz#QXyBC2nz*~V>=RYuCw|cZrdvJW*1!{$%auNIK2AjPxY}Cy`9Qa%H zI$UCQv+qXlU`x~G`j61iI@(1r@B2arN2dVHiAoi8fExTx<#MWREso$ zmC`)<{O9&XbA+5uXpp6pRqB_R@rgn?quL{1&nZU+ON4BX4NJ$?sc|CftzDLHJ*|4 zxpt(ri=_m1sq|V|(4jP{ev~+NEN@bdia24$sqP+mr6yUU~~R-iMeR zigX{3i{t&>6v5hRvYUsn?Q$(GXNcHscEw%3%qIWOnC}r0H#u)RQqJIND~EevOC|ave&7 zuFBy8M=>7fJJOi9njWoMqRjt}P2wOBFE}1)oe!A)PGB!~Xwde$`l(Pza|N9xhcKGo z3E1pU$lH;B78&Jmc)hS{ay`+%Qulz7cS|agEqIDtDupu;d?cMpCBApvxp-V*HZIGv2^yG{2FgeLpNnBXUV{3o ze6wRwjNpckK%L9}DZEI&96A1-aR6Ay7mSPt<#1t@ay#B%Hy1dN$cqMJ5TRbns96mF z5lH|&NpdrEAyFg%_ia*M0x$@&HhSR|TMKZ4&#y*c@hc(jR_E@f5hVZG; ziG}y`M=PjQl2ht^*M6gZ)F_~W9J|kA`pNC zr)n7`I&Wtmx5)d2b87zlVro?-rTQKRDV($$G{nLogj9Tlb&jy;3*B?K+pGAbW+U4M z#i7i{t9rccDpeOMb5d8}{BpcKuCmc#Oa(FbqYmUA^vq+zL=z4rrU)2Z@$wzX3TH27 zhde*nmg}}hCAbLzh?2$New82{&cWH4aBht+(fR%&L8yLDEOzj!pk^&rgvr)#fb8u& zeXdZXLT`vu+bHLYM)tip!R-~_ckBin$t12|YAJEd%Rgg9uN)0tg;98+P)Q{|ziV{b z<(hW6{|X}=hZ|k<^TXvL?1$!J%Pdi;<|!IamxWSQCkN8Qu&}UFfA){&4Env$*-z&E zN?wP@pn!JUw2cS>lZt5c;RLMh(VVU=8Opwpa#Mvym3RIZbk7}}NxTr?W^G4#Z@>PW{HjP_zAR@fK6>bBtXc6rB04kQ6K- z4`Fl?(GGnNQqD3l4XP3p{f)>>R^J@SB;w}5B;D$Zf{vQrA54@Rg9(%qlS9jthoGYn zPhvxaNSA0K)X#|I`-hH!aYC(cp06*;Kr)|4i#y6ev-Rjs(=q4fd&SUKuQubDGDJRo z*F|7U7Xzp>203S*0kMjy%XQOZCtZ#GMrR7fC4>ivWLhofi=1Di$jHbpYm!-ZU~+#Nj!NO!zqQ)`j(aov1L3TzTEB`n$7uE@_^g%&yTekRD!#AVj|tP zNh74(t^z@AvV|)0V2KvakJnnIbVc0G_^Mq&Z3lWG(D%eK>$UAYo9*k+Z^2a-R>J8^ ze%EetllO&2JdPD1S1t!xYliB>C$;&7oWVr=Mk8PY^s>I$5&(dV<^yzJz*H@YR=xvF zkMu^bn&9^MZi^gpp`RCY`OZ}qhZkiB#x%k7Da~KC{Xn}WG=&491(#D8Yt)fp3zb0P zSUQ+^Je)?J#;N8Wns|sq4b3vRWeDFn9_T2@hT(qZ)x&!75|>zQJ-1fZQ)jTw4)vid zQCN<^hRps(;dSv*xQM}ZOl98L$k_5&v{UBR9I5P z^J1w#!ab4S&Gld7MyMBbO!uB*Qbi`csp^%XUa+(PP3ZT%M3mx*Y~JtSnAaL}*#{Fv z#P;YUV+5Oxs?}y0mgU7@nuGwdGC%&?uxIAcuce`?MAj z!=Ra6Q)y%sd%R|_q{`4lD*k$Q)$+RNK92L&Cmfw!os!Ho!l;uezwZwGV9Kc3khfCL zVcm)SGg}|id8|@xAUEOI1+yF(wYxlJxl)rIR4z<%-ly$$<<>+Wz^2q|6NF1_U!~;lpr%(u ze^TuywZB^SP{?g+(NmJ%n(oW1v3|I&-v1>voI7P+4lrJ|X%o<|`}6LMV$FN{X9;lK z=rfl~r=j`Nu{#COclw%xQ=1`pC{`n0lcgo_eAm!zuF#8vWv}tZd15vLckwu83Rc!Jy6>3>jPhBsX}Z34Y%xq697-mU z03+Z!SfXh%H8C8mx4*^0#`XYE&i%lv`@Gg_v&^9|C)l};ORPvu;b>_+o~OiiDu0l@ zOj{E{PU)LRmlRojCVzc>PFX!aVm8#`oSfr3tzz-YVI(#9^^|sjAdM90 zoJ2AQ83;VBt6frp`|Yh>$mu%XM|SJf#uEjELvZfDkm*sfu;V8VlNc9`!jC)+R1$Z1 z_t+88igYZ#lkI2pw{=vVJ*{z3+VkVrYzQ8{f`FdU|>3W#Dl- zGuQ|@^Xnk(33xx@ic(}K4tiTC@@k?i#kp|*cf6ecRsKFKkX8}y1rVM`&~uD9fI`;esa9cZN zf1mfUOn@#QUYbr@&szdupS2z8O#Zx@29*)=)38Z?$LseEcLv3GJ+q3I>-wFBd}Gxg zUsJp%iF<$`+xo-Qg6|tA76X?t9j;1e7J9bKi5hVO)MD}2nXTN8ep=Dm@bC;>VdvPK zpd@(jn=dp2@0#l`&cndho*$piSOQB#Ub-WZCw}dYh^yU`D9gv)SH12h zHKR4VBm#?#?O@7ac`&3Ml)^y-3gEUi|5cnF0{?MM9AmmSOoJs**)!)2vWtyfRiRNp zU!V>l=MFf;pz{ty+vr6NR&&XJi8to)9n+)jsRnX4@wjhJ{s3 z|Cyq8z%f@gOW^d+xW!7xCmCrBbacFPYtyL`K1k|^+pDP(OB}E_J;;$=LfzfFbS{;a z|Edj2j3>SyMF;!uMNE~1(|#LB_WBh}+#^i8tVxE`(fIw*V|00OcRO2W?rZM$?CaVG zr$5J3&a8`1pDA0@$hh5C;{b056MMB93+(=8BPu5@#X{MKpfVHjLO$)ZZI7Z=yg!e_ zx-+x0vuOlrfLh^~DKrQ5TMUhzBzM%7x46P>(oNEI+}G9+L&|g(M?EXpPHBK@z}Mah zMg@WYe)ZM_#F(pmpX-76I~x7P*K!OPY4TRNvdbdeuZm&6sB@w+OrpI`o&^z zl>S7TB!O^-aC!9V=D~+#o>~Bp-*MWJHcKW^-KhgibF4t-86Z=5=j2c~G&CHnb>pCs zFwuMp&S?nRTnr>&D3~d&AV{O_h9yz+xeaRirG-Wfq%}7k+Q&otBpF zcwcK4CC;DzkX~3Qb1b(izKfWUXWfhgDIb$sGVyx~nB}`&xJQDKgcjp-FaY{e^mT@% zS{pGEa=YIggGEI2CSV-0q*}eFuRJ-exB_z3ulGR~ufxPw`7|CXT%lC{lZ^(Le}Bw3at(-5dxrteE5Hg(8@r?>Peq zecTS7ciA4F$aRxM9C>9Q=H5{mIB<0sn-th}1yp<9{W3By5Gi?XFsqw_SK)XYId30V zSzM}I)gS^5u_~ZE}2Za-~&f0|cR`EXTCLlH`3oeYCj1K?ll zMsWCA8p{rJ7-_J~(vqCCn`N|UvDeSG4v$G({4%6$o7 zFqPpxSPqrCpJeF5z6k=f5nyf0AUo0_~e$NXQ)>j9;;M zb^2s~u{rcJ9&OFqc^1oQETQpqX2XPHI(go>(O97>O8xmx=Orq^{Wz<%nbiP`Tsuw1 z3z-Vx>f)2l?ws;T6BR=I^G7dgwQ%pc{usE|-cfz;|8^>}@G06>P;Zc6ZF%d_Ufi;2F-T%Ap=dx<>sP$XThwf*hnAzuH7CY@%-wR%b`!M)>$_yHx|dVTOoH) znjwMpjOTwEk=tzby6|lWwOJTmZ(CcN#r1%C{d5xjsRBLnQ;z(u)4QXdz{X$*N%KzYCkEN`B`s91Uls>14^)gjT=Eh!RIeuA^|8W z;-C<+w7%`1=7o~hIeEAen?-=h*G0PZr!;en=lD>Ukj-qyGc=i0DdKU1RuqGN&M-SJQMt}Mq|Ndg-kHGFidarv;-k&;)`PT<9ggNFvE-%$gP=Z;F8E4>ORJ2`@~uCb z*B45dG~7$u-RDt6CiZ!Ng++hR1I(_c4*|Ku5BgSdAkknZvsA~h0nFh{W@*Namrsq4 zZ#~-E+Ucqa3k8LQw8y4W`ZgLsV;)3yjiaM0G58vAvM3hXqf`{LbkE>?wj1IR8opF# zi7`qr1U-T zjVK_;xo@+4qw;T30J^PxDeNLQ*D;4U{VzV;6fd%`K%rnh`UsUJrTKiH-<^4#HVrKO z)=Xgz6t;@=D?5Mk5U_aOgS-lXxVqlO@^-m62c)JxMwa`FBGdmP z@0Cnr&W zhK0L`4qs`$n2DLao-sU>@yD7oX$@k;#OsIm|H9Z@O)r1Kqv~ODVPe;AhG<>%?z(`Q z&73?DiWiB}+L>s}KH0_-%}rvLP)V(?iGGYVH?c#)acx!r6*G5!iu559Y$!8tyYz8=+0GXOeqo1>IVpY{9Pd# zx-n*3V`;oRyu62?&A+L%iR=AX&2{rUPtY<`A^{%|NI6_@khtu&eenC61psVzurrN% zQ+gpa?K{K6Y4ueEoCr(Ms|=G+1H#=3rkk_jOeT}jWS&3RC=`Hu8=Sx<0^e^E%9VYE zjfHhzL9T)=_6_q5m<^ZX{ss;rxOJnejTs{W-7Sw*+%2 zR>QeRh9jA+m9R-5QS5q{rj+LS@NitQKSD62NG$IJOl>FlK~69{5OmcZu{L| zjo0U;fb-)re?tpKH6z)MN(WfU+~#~BHA+`YK67y1Y+dhFv{+iAxUueIooHxml*yIt ze93}R=S260a}WglH09&yizayW{hyegk#RU!x;i!BkQq$M)Mrwxpg;0Enx2H_2SX?b zARncrvAAq^eHM6~(?73&zJGU6fR(zgQXS3!Rsi=H24D$ZpOd#JdPogd8tdc!P9YC{ z@Sw!(78$^TC@n7|(4Om-yJlI}!-I>XuGNY>{UDc;g+DS;iy$4`ytRTitsCW-*G z=q{W0<E1o7(wBF#Vk=s!d0U z#qLymVC-f~pu(0e{-BFS#EK;ph}#OVZ_D)_`2zK3GN;CE<&C8eh`So(s(+=${CgOk z2LWV3L@g(eO_1IU7H()WrD8CEJ$P66|HavRM@5xq>)$1aD2O1EBqJh9R-!}^1xX@^ z?z)xESVs?PbI zz4!AxpPk_oc2VMM+zo%2fsbqVbbrer-c1Nty!|nMJN8#Fa-)EBY`2@2D$vF=d)hQt zCCuGv$pBn3)3@vDoM1dDewEcV_Yvb}ZQ74hN`0{txQWAbfett~Rq#JP>Ig1Wu|qRI zO&w%mUr5dI5rFd0HH35P3W#YE*k@ zp;suY5VKTbfQ~Og#6j@PA=ik(q=j;R1PC#P^LZ001B>6@*3OPOTWN;TibNFX9Sd(^ z&@L4RXx@N2k6?6WPn3ww)|ZRMDf-A*Vl}HU;idzhqacm*%A~)x-P>U`nOD~%z>jfO z_1@`)vG?40=!#Q!)<4ypflpMm2U~kGPiCtfrXL3IA_?4UE)X@y(JrTj3V~mU6I=lR zzKw16SaG;zd&g&aw44x*d?YhN7ZyJi*&^G#HZk#?Yo%OwV@5%YxqYL=v=PQ}y!dg4 zrRP!W(?4bVSkI#nyUJQUh73+x>8&buXh1KlqWwkDo?#|EDPX&xJkbtY6N89`-gsP> zT7m7$$58=On(A=Daa&EvJmsTi79Y$Y5R;%fr!eZ*WG-u!{nethqO%e491q0%jOm5RDRJHDO ziIHWMJB=R2_p#$e)AC&c+29oB#_&a@I`;5`vQYv;`L!ayD!-&L;jqv|ADyC2A!_-2c^mBfZ4d?M-0@_8L@!picEWBfmxLESRJdC< zQd4YXaFG@cSe6fiEcn}R!-Z56BQLCs>#r=vM%Ok31Un%nhB)~pfRu_y2T>zqz*SaU z)EgmZ$4^IyUH-_!#c;2H0ihEoFWd%o&u=>i4jNA-6r*YewY zq|x80e=VyO1r=|e7jj`&uQ`j}Js|^OC1HEvcCoSEWU{)-T5Uw8;yYV?YLODUTKAnh zNNlU09rOwn4&Bg}FtU;DTbG6C$iJ-l*H*ivwG4MLT`8`v76M;SC}Z%>Ot!JSc2S-T zG=^o?lfIL+P^f+!%V1PbQW(A6poF>h6LHq7oFXJ7lztizM3zo>)}sK63%@V-TUGby zt?DcpBfFGuraTF}hJv7>`(xq!mTmqDu@-%B{ue&oxbiMkR>H!hR-@R;>UgNR>y7=< zW2p8PbbUg9G(jU4BHbx_9xBvkwA6)kU9>1n$*V`V2R}V&sp8G%I*zxy(3M*DLf&Lt zhyh7G1QRYxfRqyj;jDHS~dVm*!Bi%$5Xn z5!3UFgP#&hOU))fGDnQVEGu34WAqk1_&u)dzwF-@Qyno8=?G6|AIf}uok`EUqVv?; zkGv;xZyS_D*W*x2B5a;RH_eKFR7@nu%&cTT{c7@*GRCFR1jl};EU|-;>cTjI(obFN zeSXG~AQkR6eopZw+DnbRH7U}XO(TxjQD=Nzpzq=j3JB;Yxkq#(>hh*MhW-hgjxUQu z5FwrDwDi=ace3#paDLC1FEMOqtL7sP1c*hUAX2xV{*{KB`URNZKX(iatP;iApzH3x z{vC@HoY3JU3-6RqTiKr+dx5G!nCiLTNh_(YZAN+C^>FXpXU5MzVtS-VP?y3Y>6&0J z8v;$qQ##KIN~Qydm^b<35?-XGjSzPGO%Kr%>DHxD;y=Tc*>i}A4jdO9p={Dl!s;_% ziug5J&56?c9%;zs_@Mvy+@{qCML9gaprPkXy*;LINqxL9z%1;!clJ!iDW*{J za!s~J#F}l|%F3@6f}hJ66{b?1KV!$K6E11U`>y!Cpx5zX^zWJrTROp4;so*-_o-uN$w>09oEjS4??x_vKfS`aYHj_19Qbdwu z=gvt%|5us=PNQ$b2YHLZ_kPcP(nUez67@{^^68gY?XPZJDzh3L!D+xpy?nmAYQ%U2 zf3nZlQRutcoQ;SBNA}XW`GUSA9QlaSCU=_RD_jXPzTbYRwrRIz7%b!a;A4a=7`8o! zzPxJ+8X|L49P-zE=woE%FO(PLD5RGm=QSEmtYEk&u;{1uX$CJN`UZ-sNvp|;TICh* zt?;*Vc=?5Tphp|sH<_%%o5L#Z6(0$TD<*t^=JE~vU7WXc=9+fhq5aP2Z;QRwEcP@I zaAr5QI(>_bz6v;6fhD_hGVVm_OEgnh6XA4bR{~Rz`eCMmO?-*;&#$r6nwB31FL*q- zE)G`zFHwy%#iMXqn}b!IQ)fABu?LcU*Oe;P$+=UYNMl?bABFrEm;h^+-7NQ3)9;5} zlTqJt7pdDvyTFhZqN)UQ-AKN1Q*>p1p3vvS|cQJQ9+U_}cNG zr8;zDh=+5#^Om&K=iuVM`jRdh8(J1V{Mh`{WfAf)mmM@OZEqTW$cb+LAjPzLvuwyg zNq4FG6CL!^MD6hcijf4YUFP=7e5HQi1FNVR`Y_#p$|WVOzR;{aFsrPk?$mFH+32yF z=n~~zD&ou%E1DdTt z=O`a&HwN+(jMTny!Nd0)V}IB2rcVP`zK!#UqT<-yNwF@~>2MBW-r?@m3~mf|}sB?`Gc^bm7y!N<>m zCEuqAi$B|^DCIj0o$2*q08L4d?8O*EOZ8QAO^%9%;m#&Q_9&hS{^y`LKCby9+RmK# z5~{~~e3O;mC;RPp8hPSU7VgC@XB#d17xuUdXcpN--Kf{o#b2O0U*i={urpfajGe|z zXbSJ_^JPKj)gVZ3Jcy8gb4&XBd<6a3@sHrtrR4h%=@UUC1r59V&MH1M1y}ClN#qaA zNb99h+*NUq*IHS~wWE`7%)bKbJr%qi%62JI#CB!Bh zc8}^a_5;!i?-B9L!(bc%1l&u%RK9Y0sgd=0YmOS5EAOV@n^V90qDQT~10B@FReRU> zzOkK@LaF&!!5x*feFEgXF`4IhcPql!4otxfmr$JYxlpVfTi?PKKJW0)Z)-aw+V zr*Nn3-TOed8b`)Xw9M3Qyzzj1+zt{lJ?m$?c&)ppeHKQ(y37jqz>50O;Oyr{Iw=d4 z+&jD0+CNr}-Qyo+4g7#9?DuLPU6M|)N%?JCsAhl@mYCOv_mgT{>$U}xJ{N3T-awaH zr0*epG{2X-VbejWbJ%sBRH7S3Y(`y)q~IUBE6JJPlXynl;`(2gfZv0hhf{zr#CK+W&f~7$w61cDvW9M)1p-`cNTrY zS1n%NE07ahJT=(K_aSkKBBz{Zsn&9K@w6OspY0BT7Bg|bEDpU7Omu)E7SwO~*OT%D zg;GYIl>W8}5W|~>YZffZ+@T~K0b2_LkKYpoVAZ%?3P5}^`D0JBgX|O7j6x4ZML#?#4r;=DfouI;N#VU-%FsDs zEU(U3DAF6!r^bf2elb#@`U9Yv*d{k!HI~elM zw-HHHI7=yeTHJy5&t(g}gwyO6|Lte|WJ*VowJB&?)sai;XVtA{^SH+|SW=9tXPS?Iw-?b6#7Mx~z zkx#@|!v9n-NW4{)icVy7ByiTQ2;YGYnrNsJh6}?>0f?5e<~R| zbfRUcOO(N@vMe;=+WpxiF;{?8)zo{&a_GMHqwW3LS3kATqXgxKM$7mZ?r{U%6Q*(1 zmxMh3{@#%H`LYIPw5eD-xeNIFH-o;{U0xU z`lS|EVlwCBlH>RXI}qn&4iQO%=S+ieodCVlHW}XM)|>H{3ichhwOXhuH+ho1YF~I+ z-6{ra+JC%MyI;kG$>XZyc#54T@G%AwWASAB;mcH|eaWtr;kmPTh2z67mQ|Zd`7)dU zg0i2>OP4Vknc~sKUjOn{{NrnRK$}2P^eXSYu{=<_GRKTk(_*#>E*LsTO zVUHGbz%S!LCy~cDC|7M5J13fWZ|#KhjhQrs6o-E@Wq0Xb z{`0Q^J@o%Kxa6Zqn!17s_GbR0KEKc1tygj1VO20anP?cfX}dp!oJeh_-r04;yzyeZ z|Kr*}eysnw?4r*BP2`5kiR@`i6x^4;e{jj1?ajH{U3aR1TA5awx z$6co&0Nu#=8dEP<4$E>j~sPLoA&`$X5Df$2WO0N>iU95OqaXhbq z$&o6Zl4E;5mXol8yi>|KZaR0WTj)ZWs?h9vT%;dgek9^U``zjpA9mOYm&3j)gdy=u zLVnz6I#4+g=HqD}s0%f|g1nF|s#Yfw21vmt z4x|=Cc~T4Zq>nyXx`D4PfRZIJig;X`LKYMVXI;i!UFay}%^+e@;Ysat0aD@54VXI8 z+&YGM(v(oC#kKibM}$^mPIum>x4g{1qd)t5r?E@3{DYzZGPg&5t79czd%7^Q!W+rL zXs}Q`y{wV?_eU3UA8+_X%N!&Zf|#-^rlb#=8lK8sr(dhf7DV;0%b%H(XAh78lIxl0e?Io=FfAfy2h*fd0#;ZI-J$)SJ&ygvl}zNBn6O}!l{^&mt| zjSb3vi4k%s`YYn__m;Q{d$zc)tL+2*Om0i9mn=()R`)v;XJ^&431*g2>%>fX~~RIWsscne5+L2J}PSU*99G+&m~YE8`5ZMD_v(knA7OV zM?P*ooEwQ3`^jKygf2JJaLMgnKmA*01?xW{0BY!Sy>KsFbCu8G;A?cysrU8=V1|D0 z)Z1U*N`>x9NaRL%Wi;M-6G^|UHf`E0a;4ep0M`U(DE^|z&*$jy0` zbNXFAq-dFv564934LM7Qi0Y$}QP-KAtb(YZNBY)L?n+ej;j-N- z0;!yg!)KSNuqiY9!*A{22w7|0hO6VXJ*CldlQ_n_wXVzE~q=JT9tpITT9&TZk1PcFSVWc9n{s?y0}P$FAjFq`H-xiEi4qQaoy-Q7c5JW zx=KK7zB?PxsMk#*1eln3s-v1I&~2 zbbMD8H{buofih1ck(4ptg&hC%VD>P|7skX$g>TaHrVW59FNIV&lKMY9s-yO%Sg&1n zX^WtfO0}uG4-_DT>45YAFe3aAa}nxG?`;`s|Er?^c&7hgd9m@sXWz;rLRBg0QruM67wSbLF9BDkl&JT42|Yb}ojP|M zP6Y)hdXXs(Sr5$V02g#8k>}%&)m08!LJ0b0NS(T_RY3&eAG;16xNg9Dpv*#g>*+dC zBrK+#skazT8#Gm{a=h{G;hV9{!?xB%qCFlWzzx|tI7sQ(*no=oOfsX>LjtDtZM7b| zFK-%3l5nb!mR$BrCih+LWCLS4^Z~A@W3rUwj_WbZc!FXXEOc!^u2AU=&2ta(b zlRgRv4xWL9QqRF&%_K`AHI$<+)^TMI2vI1mB^S>(r+kB@+`(NDw*7N1lXP4$Yk=X( z6(##OI{8wrt^sDx^teJ7eD>D+N}_r{Ac}fYPqA|5zcYtmAT_ioz)Kk({W~}?@WFz{b>)vB9!!w{k%6v?~z@MwTTbF3Uzse2@36VDK=?on_b? zrO!nfK2l~S1n$vg#{+`J;kHOaNyEctX_PNEF5&H~cY=e0rWG3u;W(x@>84(9pPwl@ za*n0I-RacbdErziR`0rjrI0Ej1y|zlxoye18aJydv1@~s=tSO-gG1^ zYP~;hH^d!xmD$1grfBz)_o~S-MM!0)Qu+jqc9>7MQ#kh~z5-kxs|Wit6V)zX;yF2i zlr^~ZGAWB12v25dZ%FOlG$9Wfg3IiZ~du2cGbJWZ|o3j5sjfdvRFup_z6 zKs@rhDc>u*eou9d#UqcB=kMgdd!_y_oA7Ah>9rNshSi(wBcNmc-hta?nCQtZ)JSUJw|beAbIrPKK8@9k4N4bupyRV zml0$<9Lx5Y7D|m@qZvZRT?s+x%&vy+2@fzkaBn0-=t6(W_n6|a=}z%dJovXmVzN*u zYjj1>u#Ju(@Ive$hI&s*s!gP(H_f00Z_lvN6W|CjT|V%I9&40Q`y6gCgMF5Mp998; z6g;*lFu?qHH1WrubS?&@IUU745;DU;eA3VPkFPbB>u6^iReNp-gX~BGM!I_-!T$r= zqv5yHc65st+94V)N$*#%w zg7W6~A5~5PQm0OR&>5J`9m_T$>`b{mv7C$$cv|I?PN6jU@}!Oq>Y~@eB^g~=Qv6_Qhw`mXqS6ueFxYhSL>~ZY z2Z0vAEUIP3+FAp`7nkZmBhb3-@byLYKY38A6IFWOduEV3>z89DZxwolicjR1qw}F) zG`Z9Pv6zD8SP>4ZYA%_G8)&kRO3g_-leqC=Wut_t>GhyU>To#auduOscalM(&|$vw zF6bs#7dlFXP~b!&W0Hx-Mj`TOru>^Lnz*p)yDdte5rrBrvy66qT)fTgxK2nRV0t}I ztJZHs?eP&pqk==OIZ9j%g+lW9V)1MUsL|jECXMHRozNfyBY2$L7Ip@gMS+-gJt8l> zmB2VB+;XA>s!xGY_AM+P6cU{!Njo}P8+BUo8O}3Yv>C8H=u~gFgLIY(yQW^}hnGlL zB;6sDc%~t)%H?Se_O*+8KR*qs6**R3Rk(}(HBpQ!8BWcybTLVJ-dk#zS|;bR*5G7@ zWMs=+?l=l%p_+fMI8**jlQZv5pd^q|9iXTwI-DT?P6<@)?Dv3&R_m3+ z?A<$>nrda9ICIB!D8#7iJqlSWxuk<^d9#u6`cb|(P0h2X&zwnD8l*(|f;OaglA;}Q zEAN%5i^;Gr))H^-bhq7ErqgmNUh@;RFk5_9 z*v5yIfM>|c6<4W)y&&2>Mfs#_R8>e%7sE8B+9wR~lUqN4)M7eTg9E5Glby6PC@`e@ zf~6>ga6&C0m=Op3IAPEwrM{sdFVuiirZ?qm^W z(RJefI>&`ulze8PkF$Cbej50cnGVjzb30ptwdvd3+vN*LjY})+ zdEM<19!gwXoPyVw?O+F^;`!j0IUXt7bFf}uqqqbVgPm126he1B*4yKj?vRk6~a9jJ#*)RNoy6<8u_AVz3-ftI)7i?3jZfaYGHu<=B`lb z+#|iNsZTrB6IJi`+`zFD*Y@KXwgIh1skwfWKV63Q{MA6GFzzEh2C%8r0b^F|NLc5J zDE^WC->9HV%kdFgHf7kkjUaN{#;%Vgam>Xc}-u8 zm#+!z2sH+k%7Eps%6TmiihhVc>(};IS`b1zeUDFGbExi55$!2W5qR=m?MOi!Q*->) zT}=}iIk?^_W+)q#E7Z?&W72MWf`#G3s?Wbwjax$5Ptd5o>&C!WO=YNSjcwg1nk0(h zL!lq&QC?-h1XZl5udM_uXJ0DFH(0iC#gx3dcJ|6`B9P$-D;fgx@Hy6 zXT~c9Rv2f*D*{#)vEwan@V{MMdRFZ;&ezxcM#`8aDap8gQ-xfvw!9z$Z+B{xv!=%r81eZMF8HF!rd*?Z|NW_MBw@b~l^_$M5OSwUi0^W&Y;axY# zbzelK^_i~-5^{;0r`>BJ5_Ts+p{|3YA&8I)3#8%ogKdk${b8kKVJAvN5}IOYvfVhm ztll#WCPfqqso$-&s~ebgMFGml;GdPHz5TIyPyRZm%=Y__1I7qManI;`BvKO|A7d!W z*1m_R=IhJ=8{&gTEg4t`5rWhC%Ujs?b6=hbxvUwCZM}BgUnIT4$avFb(o?<1O|{6P z{G*NI;t1^yJ|jXLCy^p^O56gat1ROh;{8nQ!&>g`t7r z&8H)0fs*z?nFS~v_~3Mve0e3%Ze`3VN2B%(q$OM6^Sue~!W`{dr42qM1L}mMr!Mw6 zHltMpQYXh?Vh57}I2O;6vZ_GvRNW5p44sMGwBQH^JN}+4gJx4ORw}F0D z@u_xcFgMI{w1@#5%fXS<_hE^><@N8i9`e)gG;$?_omYtE%H^};kb3}?W|ZU%B51S+ zKFYPFt617-Vp^_V{<(ZoxgI9s%`{r1%0&VK-!I`kz$=hD_~;@Xgt~lFAJp#~ZzY0n zf*TAfk}#{BLG!*mE2{WNR;KZZKD$_wA>Qt8PUI(WnC~J#S?#a9l;|^f9@2!L(I?ap zw+%*`0z@}Ssl`nH`hjim!2InYTyLjQ2)Y##T?km$Za$Ch0-Z?cKvoYlar)ig(TLHf zeTM`N@6YKiKCR^v`Lw3r3K)>EHt>E8`liJ$60K7}+epD>%JuNjLAh`xP|bODi~#ik zjAwNVYivZ`btZT zoK1dm?1q6T;i!e0s>5vz3;s@E4~x*UMdj~~QCu7J7_Bgzn!0$Aslu&ogmlO$#Uw-0 zc2JtlL@4*4V446+L%IWS5+J+^2B`I?H-ZQjGc-y+{o1wiK{eFu+3~#QUFE zV#Z}wbc1?kf!oB2EDeDixnG7`fmV~x>eaIN*nfi@6%i&w5nbRh?+jhSjlS`bz5}2a zPa{?7KS(~M|CQvU?T1lk5eKBoA6Mek=N2C(LM4S{0i&uP*~)M_L#_AUxGE}EZU7is z$s9C?XMx0A=j*Pq{-I42a*;#ZeGM#MO=r}q-QVvKRo@GlUf<3Qe&!#fH@-uI5VzuT z)j}ZQ%9&ITAQHfbvXxor-c@~}YvHC?#Oda4+#n`(A>^n6k~Dj|^)`=+ABqG71|sDZ z0&iMRANAK(3^x!z(h=b3R=V!C{F1fZc_$v3@5PMPXmu+Mj@gNhjQj*f!j zdc^*jZLgLxho2QnMH4hMs(-Zw#8lZa_x!>CRdtob{l9a1%6<%43E3XC5){@TTq}tn zguV1P*NV$<$P$%VFz<(=xkSYpbO-kzWUIJuKG|{XEeE^*1GI|Id4dr812<>d)WQ7K zTVcnjoUINnQW0bn1|Fd2(=DN+r8`WBUNapQKq|gZG?Mc?+pqG%$KY>@PdH<)0VOr1 z-JFBqm^uS|1YXH7X^?;X@Z=lV6dpH?%y)E!cH8gl3l~og30^HE`hNG?{@%|Vf+2}S zP7=-bWvWx=4`vdw_3HG?Ulw+Zsb-O2B=MM$h9T|2kIxlrKDfI_Ye02cDI&~Baiuko-&nmYM7XyDK-*@$0sT92kG6(S4Jvj`QE^vpV_T+ zNG3ZUOHn`cJN>CHWp91`YttAo(kdJFQ;V1fycST0G{kK9W-Ec`0Z-q!u-CyB1^oX} zyB!7xaPM86F1~|*Ex=-Gz~sUxy38t=Vl{UAi{a+_>X8Sv$U%9N5f8LaRk^KNM#v&;wHEaP7OYmZyq2^>vXUa*jP3_~@rn&{iSOnWt7( z!j+h0zf7jaOn=XxO>FAp^=BQgejI#Z+N6@}yXD?W1kD)hq)*J(s+QN@7U70%3ePpK zD`%@bxgr{728VWPYeZQ>Q1MZ%_i-{4r?mvky4CG5))1W67+=O45Lj9{9VaoeWBWxlgA zrY4uAkiW;}clY_7l)73E&GXEv@a%cTp^fKjhL&;GEe8i@NUF!~Lh${tlY76aT^`1Z zOcgGOEB9Tw|CEjdZ_7ZKC?Hr>cv-Y5Bs^oAQTRHJZ)P$%xh#~{%{`y7c~oQI0r|5d z7Kff7i-wexDYQeE*Mem(+^hEhdNX7&gX(Q4pENPM^wzo~j@_^?iPvGS^SWY9#h^Po z{Bzmg*hA6aP@^L(+DqEhg_iHU$A-auqn`Fy?s&7eSz+>9e4HvJXZznt8}g!CLP=lt zfTe%hL_5dO4PDel;w=RAp0UpB9C|=x@0=c}ay~i(@w}_YyPJC#Th=E|o!YSKgLz(98S9fA z=vYGAv}Y(!2>>U>02Z-h9FGsD=gV#U7o=|e5w{$`#(qQn#39gYN7y;+>HTe~TtBa8 zT?sF<+1?V5tbeojxL54KXz^MmX53V>Ex9SEo9s9aKc;JJezR+C;ENU{+HA16fHk!XI}&Aq5<7$-{sMw482AyWWmD; zwGc9L1!hXSfjh{*ZMCOs$f})I{J`{8ayt?rS1rEB=nxOR)o~xxe`n-q4M`#w?hB{? z6C(7wVgG&SQTJch@uylGL6>FUR2#H7k`qi7xKXzbz(YFk>ie7dmUus`38k$jrcLWh zTOovBv|=b~@(C#L-ZyjV`;XvI-9ca`2pHvc@jSA~U?e|~s}nM%(XJa+=2|x;6qP${hfJBN1qAfd$5mBY@+3O#FzMpX0 z;(~#J0rf*h*|^T3dJ|#A$!51y!C1*&%?*9~yyV+)7seERctRkEaxLp`k5&Rc^718wuA5>jgFXw#p+p(uur zwgG%>P$nYBOWy!Q6IozQiU=jo2SU_YeEk0fX2A{Y{=GP8k=JdxdF9+W0{H??@9qtY z(oX3bP9~SKRyQ&1hQ9g}aj;0Rr%=I+rdzwZZ!M`#Wni|pvQ&c|Z?-3Lx+M%5YV&!B z79;XF=s?KK&6Se;ng}EpsD&LVa0zKzVG~5(dk1DYAUXjALE-nzosdFWK#7PR)j64> zf4>vlWi6buHSU^Pbj#Ns=SvXSSA~{*d9+%AByE>QfP&6D>0DP1iL@Eg{+3EU>eWo@ zNC*$%c)NA<+-e5+AYoWMRNmEw!52d8>6EJ`XfCTtn`zJdI{duDE<3rIS23grP{^dSm

}V&oSD*sbXo=q=2vg{*;-3nTn5Liz>~#MCzrNor_)?-DDPY z=SFaImQt5*iu*k6u;>y^l2WmGdQ$eT9&caCZbx15`+}`4;_2}yqZh^JnDKSwwyHx} zG8ME1d@c?r?Rb)Qv7evB6?AHj?8(iYC!M@t>0PEe6Ss`r&wmw64=kC7XAsn#33z1oD)wicL0-L zJ~7wn&DaFBO-hG%-XlbzG0YF|)OosH>XZOR&86HLq{WluHp`E{fYOLhMq3H|( z3WZQhL0L!kyv#5ww4Up|M)>QXZd+7V=w~OXZvM}&aV-UJ{jI7vIGIzfhrk&}DP7B1 zX}|1cjUa73c6F-rMvI)PpPZ_4XuF_RG363JTdvx(3R)Uf9@ugqAKA1Yb}~KP;sg62 zaKNw+(eWuDi$G-ONi-d9cLZ``t<}+84|Rn#IK9(L`HDHF7XcWB1Du}qt*vH-8Sjg= z95Dxf8lh3B>gH=ficG7s5urZ9&{5w$;D_c0p%32VaR6CCG257+1!JS6UVgpLhCS}4 zhx5iJOnngjpVjER{pitk**G@SM`&`y`U^Hv!=V>uz2>C`ROFDq0Nd|_SD3W^mDMj5 zGAv7!CUf!MD`%Dtz)+xqi5s-gtuOP@PLLQ2io2VzX=S+vk=pzx$cg3mz`Z%dJ%_8) z-2TiQkBXyF2KDCrFa12Rq64}lGS;1<1H-#J1X06u>d(}>>*yt!pTf}M=^N|tDDtCs_2F9q~E+(1JDKzI7k)gzg zX69!K(3JZpB^|DWPiS^Ar+T_pBFhlqnM!7L7SmB#U9IW)D;fe6B{st<-{V(4w}c@g z7l&>g7JPRwGi~W-3cJLn0F<^LP*);*JwE?#Z}irs_c`^G+^dsd9>UQ@Z|z`RmE~Au zSIR+qDq5HQs$O`Q$5uCVtD;4yGdXyVPby~V~n-JSbpN<67^a;Q9zc{BpUlsNC5FfXKYnQr~~n1Nu=U+w#k7<&)L#h1keO z1XyH(a8K~azC>CK=VPM;oqk1`?ux%3pLl5(s|*vpPEN}QyO3x}s=cE}pwM&v3xrIN zD&%j(Ppg0hrY{2(cBHXKi-OHNQM}z9Vz+btaXC`RA24&);Tf<~1->R#aywFZUXzS-%gM=~%|UjKmL!xgA}6pyp##Dv529N-)|Le9MKR z6zj-$o1X9MJ64kZ2G2GXuC-jYSFLhvnUbkJj$QP{yZ1+^ ze63oRrO_$5qk`#fa7D4tae@Q|z?f-Zo2XOey%YaV+YLgS{`{&4N^a5!D4nD|W+S~M zL6|?J5*s>HLzn#0qvv|hpbX3EzO=XlSB;9qt22M$QR2mTl%X-9k=4DU8_oDQQ?A!s zzMc>qc?KIbFl}NUz3q*^dB+}31bq`a`p($GpsVh=2Uvdf!pIuA23WRH#M z#`f@r!(fw?ZnJ=`agLZPk&ln{U{PSsbA-+@?y~BA)1h9;;)2xh`4HYUUceaW*kRtU zj#d-GZA!e>2fQ+uQ2`k|WUOO#x8UwXXlz^ty(PMkwGopK-RsSPR!FV3O?qXnj{`!3 zMzBQo8zwD!W%XAD{2}B(1EW}2YCM~^@y+iOjS|6qHAWUZHlvi937DrZuVgNz!txQQ z;lJuYk?^myp6TR<9c15yCL0>&Qph-bAXz!>PPBIRNR{Ltx9kLWQ*Ue=`bn>(iOrEOMhQ=T@^<=Q30`Ao@0@wRSvcgxg?3Dm=T{&5lkJGc z9xZMO=B}~Z%pBcSJ*f_Akv%TDk&Bcj=8G+9iOA-9!Lhq z5m;5g!V|3u(=kA!0sUOmSLU<34!f@YaRV>x*sFh$detMBd;4+LL#vHv-{Au*^oVq$ zK*QR*60_k`vDt%newy>zUa=;eYfjhEe(VL2H)wZoQO_}=_<+?t2T^b+;|yS-hFu$r zP)V?5RmlPh1vHCh2&7#|-L3aVKi{VX)%Nq}&Yn@wyS~244?q|(7Ud}%`LZT$`Mh-j zbytIdI4fas?6N|6TlMWh)`)tL7D; z`DQ(L7<{2#Y}BLQLgCGE0t>mo(sU6LhNe^^rk4z<1-OTbO-$B$$~*H0791&rEdwmw zViy05P+sy%7<758uCAI+R578ZKuRri$~L3hf%OHftCgwWhSMrsw z>Di`RpG4ILzb+wS`MYo%Gqvn546%g=7vK_5B)RUswdntlW;{csE3wy`Iow}R-#iZ=KG^_b;(&dS!DX4MUi$LM?j$H`0 zDS29>#IY4i9$ZAo`>J_bEo0kDZ-|3g}`OtVND}s zxSsax`jeuoll4B4z^0KFPK%}llK|QL8ba-Le^!Jn;ef3#$St-3%~i6f1KIZCko2n> zKC6C;KQ^q+H~e$}Uj6lFyd&wYiM%Z)fEL_gydqulY!#Pn)QOSv_87?d|?@a_2z5NV&uj$H>I z4B|HgBrG;cz;628YgIX@%K*}6wZTxXv^@Y~;S1W^SPpYX7a)pJx-?|CQnhV7JO`5S z(omkvqbYkFAYvfgnveBW)g3`Y*53+F?W~S-R<>TOa$a}=hYE_QMlMf0dvJPi^GD2PR$=~7V!ZrMsFug(d-pP{kaXMEvDPB^dJb9vmrnPkni-t zD942MfC6c+;4N{_yLVWahS9Of9yVBZLQFShGf^heclsCLo-)wqD#T+;qK_?k8x;EIgtM2f2{nOHp7r`P67cSbWA^EZelY%*TjYgN^} z>qloIL*ZO402 z<}WVS7MO2q#7{=DsBpQJ;4>@_04|eE*JoRO)nBF*8R#O9v^ToQ?jWP}P!WnPM zu*=*g5}?HouZoP2mY1HF1&+|hJRN?QC39eDD7(ch^m8pe`MUMuj*dKl1d$i}f@I~c zEHGx(heRZHZm2!j7Ta;>6E00FHJdpelBf#iewr6w3`|n|gN)?k_RtY?waGt$zi$`S z3i1mZ>!RY48{_JjQ7B)O^gVIq-I8Rl;75xe6BXxlb(qNUTCz8CF#JpM>{?kdkRSRx z{8u-Xp7-$K&VqBeujwc zeIT1euOT2hFjOGB2(oF(0Xh76NS^9ZwTe7&$W(+=z~c;SH;LLJXeGhv*_p?xRKXQN zI~J)U;_*ea898wNCSN3kkez!eR!Z3D+p*0XYAENV{#8>z%2s7Jf{kqt0Ix$1!%^)HGO6mlgqz6eis?v*lg zM(i+Ywnq25$a_8Tj=eUk+tg(^G$xV}5Bmp&LJzjRm<;ZWm6$1JIkQ`8)q~@eggg@A zw`Y6vm=iocv!9B)T$5ecr@1k@IiJp~4d}M!-t=>QhuOvkt_Lvn2%9vIm~GUc0;#W} zQX13n4;snhV|sXE{~9hQguNFG9(3#VE_A4=H_VX|m{&qV7XpsiTp}Hfb6iZ(7r>0l zLv;zMJ0XZ%Xf)vN3d!YO%QO%RUK2JE+tX~5l~nY>Vb zF5+?cnPOwPwnI0EM=)6qAyTb)#BlytpFWOFCqVgQ&Ty>KQPRW!GLL>bOfNIyq!9ac z@u2y&v#Pn4*Q!%E@un;&oYU*iykJRFqPk`#05y>BXd$NUCFqjH7MuT$thVE z4x$ z+%$Sf(2ymOl}8ouNE0A`Y{s4Zf%`dXHFt_wR3Y0AE4=*_Qbpf_{LCjpvc7ZUIr3is zxV0RmSZmqXSKm< z!U$~e_iVdA01B8cD-1TzLBs<*WyrG7Y{FzK5l$ed!W73ZE1tP#b5^kgU1feK*c3k! zk8np|M$)LqlXh=on&VuhLUT`PPpTOIHsPA^m)DHJEyu_jSx+3iCR3htlgQNsZVSn1 zTHJ_;Z6HD+SV*0e6fmfv$;Ebsisl{}bVVhs9L-ed7QkZy)sXmvb^S?kW~vdJS2tqQ z92)YlYnb_CdIC}9D1B8buf#&3nzfefBpGRr$!TF2>Dv~0k&-wRfU#E~U*jAYb_`L- zRdjvi7VW~17|zt!ACjY1plYKRzCta!@7YYwSNEzkw6xR)zMJ#zB5;jt;MflKkhB>6 zZ#)Q1!zENI{k9U>X;qcrd*AJx!}P>epNe?mOmLEIRHd9!dKn+ypEKWo+7SI^l)U?A z21W6OD!)}`pw(3VO!gSHihOd*d2hvY^l-f`u!L8R5=@+9`~m|(GC5d){CSF_J}IQp zMH)B3m4s$g?{Yk&f+G9=rI9E4Sx1Z}){gqygb80wb`VQ4yvjC8zdOl{nh5c)JduFa zk4>;m8Zr?oS95`u0|-bWE;pA~H?+sz{y)y%I;yI*d;i{uq9TYzm#DNzDBU2aw9?%n z-Ccr&grKB!hjfDoCj9&4;DsWxWWZ2;sqy|-LrUy;S2I{oRemTb`?0zHl3gKs%BY+SRt;-sUhRFY)$RwN$IXea zmjt1HEC;#S0T#R@op?=5Qr%clweS-(4PwxzV?k!G-1c^$KY8)6_n^c zzAxz(PjbYj_Iy=}PgQlDgEWmK{L`B&raUVIU3n+@5=9HEIaD5!LfymH&9`-n{i+Co zlFvTG^=tcki)@v_luo)wXoyEtA`%zTe^2mlU)#6Ed2sR|ys`0rjNxZR-i}-tKfGcx zQCT;q()OOZr&by7BiY}Vf4iP&CM~4oDE{rCTF-8I__B{rE8FdXpXZ&e^aih}TzHvd z!EwGyM|=Jp%Ju14G9H^%`_mwQ?ff3;fBUEK?WbEUw{Z z*z~IEM%6{j5=u3d+4PR=ICI(x_;WK}YG2Fis9nu7Sj{6sVO?Cqd{O1-wtB@O$FXt? zHaG9Dz?&-u9xZ?xbK3*pcIZx=$ahA)4A}Oq&m|1l@_k9A6^3qT!enfixF}6X=G5AyPg9%f9pf5eJJFwT} zwN_C8D5@J@U;k!|&OoUK*8%YB-Z5Kg&2?{xMgf5qJ(}7S8xV*uu~eA3Y?tm_c+V|Q zV?I$@Lh3C9w4$N@VGD0nJZ)k9enjA_nrg`7UDnR8x)PjHyE)9 z#2t4biRDXG?Ny=NuS?k|St>rt;aOMXe7c{FmElt+zQ8kRH~RkchiL>ui$GpO>GkYH z5qdlmsxn*R1zpZxMvS3~0|RVPKN_ZW=1%o5s881SilfZAY*?nsrfb0ZH8!`_UYD5) zo6zVg*|4fVZw`pMcG6ztns{m6d4`5=!^!r=pN8L`g*fx92dg7d3S;La>@cT8sPQO0 z9E;JkOt*6Wr*e}9X?d$a-Wf453N)R0?}|@fmg`Vz9AdbfM9KC6i7zwNh^_hKsfbwF z`h*(Ij#{DKoX%_*X|=l<7YeIz);o9H;N{fQ=YI%1|9TPrx~4#bb7dFpg9grSd=-FU zTJ6pif+i<~@3?XASWe}$bh~^P4dp1{WJt?*)yvamYHjP5sftl_7~{&bAbF4^`0~Ue8uq{f2-NOsaRmIz zAPa|L+i3kebgAjD(foh^4V-&Lf6fVQZZ}Kb%OOa3bI4zk2u*RdCiewVE71jBrDw`E zQJ1pru(RPeE~v{bxS(9S>fgQeHZV>WvHq9$^&c15=EpVF4$kO* zcKR_fP`Uvd{=gT(Fne^JQJEbe?QNET%hM*7~$hUoJZ$W$r0GN>5Q$D}}tjvYBF-3jQtdFL^>RZa^EC;0NB*{pf}L zFh`;ak(b3xBWA)c3=77yJ@KIlEl3ue`j3zkroXTY>Sj zdd}Q$=a9`d^h-T!iY~(hoxXPQY)cdjm}vU!=Pd$cxs zF4sJAM*XT^+&4E`gU7P)b7qY+f7qCFox}Fu0*C(dlLF^_e$1Wg+<4Nl66WJnlrnp{ zH^^_}JVewO&((Qc80OEq;5N7`J1J1)wM~*H(E`7h&Xh2L3pFb2v$?ca6nyDi!T>qO z5z5;Rn8uu&9Bla6dZ&XA{rc>pTKvn56kW(8oRDOm53StRR_b+7|NU&wZ#CcCKqSuW z2~w}B|J43EV(e!XRc4X%+Pm%JhPn7x#art1=G2#lUf%Xlzx}r@O{Z|NZ@S$u&tomd zL|bg<+CN^uzdzueISclgWXVyo5Bgg1;|fNcu%XAIrFP$HK>9KSJ=o-oeWtzc>5SwbAa>q;=LZL7we_;9dxBrFZ4@oqz5PWb|;J>d^_#WX40MrB`=aKa?H>j#dL~^TrE^~y0?}smF zHik;6iBMmbsKZ_$bu24^(Xt$=H)V2<(&WDeEogz>{VjvkKXd%F73rEdLS`t!V- zkBHSAHcYa0@e`5i-5N#u3?tt)^xFVL!C5o*zsG<2uD%5Hr*xC~WiRy>_`rJc{#`%J!k*eLMca4K9 zme3p&@vLG7nlh|d5Ykb7QhgWK9Tpy)RHN0YSQwql#gsv644i|OIn(4yXqNuhmwiu6 zuXbiv;^7hoI~I&PusqevhzfuD{r~HbV}y z4g8Co@$ZB19^s5Tni8}qg7O)96x$Fw&ixF?OA`$vpl_DsB7LjQ^`JWTN=dU{?BeH7 z59rn#4;$GVYmOq#lmGXE;?sNY9Rxde`$4#~vgq>D`(%H{9+f;vY^@pQR=g@{?8bR9 zaw%#b`UDDZQoE2)=?8R2mVwGk1tUXEyGWtZa#@Q1ISUFKZr1}(Ci%*mS*$)RLqWA& zx{;%pYIJn9&nt>CIPyNN7@7l@2hv*=zE&#!M_i*CYe;l6v|>!wJX@4NM0yvHY>cvei37%q-xx-SeG*}&i%QT2gr(Y zizA_xisN4He0J9Jzt+sESN5b@S$@okb`P|rTSxwHUuRWYRLV!AA9;pv<|DQV?F_^Y)6*)qVbO8 za$v%rW0WJRfn>g&K_=4_gSQoq=ti$;|Hoi-C)uTakmYA^)N7x7)mn3J26d6<RRIBgeSa-m#_QKJUv4ZxidTS%IjV^+9z zcm-c<>xCgS%ig7}pji{>-u23m)q61)A74>4i5x0A%c~FW@!iLvqRRSos=;hK{>gz< z8{%im7Q2FznEoag(Ha8)2OT8=VNnQg&|l0Bu8k?Ye65$ST6GmjIp{D)pk%&xCnP3b z>i--oH&tQpRTiC{p`i_5M7xpf7CAXn*Ba!sJkR`TRe0}=^bNek#WLgTW%Qb7k~k;^ zMkIQt9H;p80=1^x+<*o($!&-0gbMcf`&HvKW9J&N#%z&$As$S9w}Dy&ySP$A(0a@) zf+k><*E*cR@Ams^&`o*bC!xsdx*Dd`9nWrDNaR`r4B}XpQ)BbV>Z_nYNtKXlx!1oA z=7HC>we%#4P&WbPTkpNGfH%zOND7u@GlsazbPvu{K98=`-#?DhSf6G@?p@uQ?-YK# zZ2;jgIdZuSKx?3>XA!r%f4ur`hauCW}`tnI(fU@L}b@?X(BY}!fgT)Oi?kAAoLFA{veg55J=l`P;ExS0aAAKNrL4xaOJ`n=EjOX*22zW%0{5t!ifpBvp zQ!)p7^K`$dn+2rYU8Km)t}LUD8UYdmcuM6*7Ee%?A}&V>C%sX7V*24v=~u{S+T(o# z=bk~bGCH;!@r);kq>~Ar-R1xP>^FFv%*C(rZdJ}Gh6h!veakz<`W9UEi$SVM5u5Q+ z9`{&2KYIptgIY^{60dew{U{d7ocMy98h8T_Rs$z$Z%Mp69X7k6~xEdth3TK%55z} z;a5|Szv|pV1r)ayiKmMn?JlMEEnT~=J1Q$} z#lqwTfqAq^tub#Fq1#gJv?0J|)Pc68p;MNE`u9QS17^wh^)U0j0;DOrfJ!h%4b9@A z!YLs@BFW|G2!nlG;Q4}x8>(L8(0RCWYx5~yg__0QQE@SgMvX0g2@kpZ%0L-U;hM!h z2+DrjyH?lMqO}z=p{YPOJ(rAi2kyP4<@)!PHC(F=KBJwe0*_$=GV&E<2W{8*m!>m_^yc#7;Lirn6P`4EJ#?&1o?T>Sy%}x|-^eKC zh?}Db2Y9Qm;}hd^p8gcc8{moLR4yn;AooR%Q<8n1+!fsaoTnfVX=?1Y$ob^Q#z%I~ z7i-xP9rJII57igljlGnI9~z^vQ-f=~fq{W&#=ZF`FFF@WnVc!0n*9g-h+Hd=wt4E@ z;NV54ljE)R3EsK(7(xL70c$5a`Q80ICKog_kBvd%#RJ{(Ea`ZTul9n_Lx8LrUoexG zq=|(?^l$gJI=Z?SsNHx+%kHNAQzg3)zy4Pd1H<4UUS+MS-W`5)ArzQq=d+clj@aA^ zWiU|UEmxW8c8+L?P|MZZX1}UW8B9X+>)S`2unVB#>p;5rkm-x#HT)qt@paew(l3wL z@w+0%3(c|AM{jA<^v+ zt1}GPW(2oRjF*FXhQ>3Q^J0zdLWma&a+R1tiPf()M|X;|r_9l@~z! zV>?{PpTOgRHS0+cb`g)VQ72HF0MgY{41ZQ7D08()M$$Ap16+FgJ1p)Z?S#gij(jI(fhFMcTY(V?=&C-(~gfzxX!R4F-k zs=`7kAaJNLS+u`85wKAoGdR-r?_?q$c91r#hRxnjx`+VB;O+F7m<;9pLI_%wdZYdHr7uCu zKrZSZia?l;l|GxX`8FsE-BUC;2UJp6_B`?@2NU(Wd%_8IYg%AeLtFO$Ci7gac=;bd zsgguaD=i!nE+IAMU>&>XnvF;BqqDQ0GJ2_t_Vo9J?*Cfdi$P51&!(*3Lqgcr*5VXJJXdQvp>B ztvc$iTlWKKvxCXMKP}Nl@XTkxY!Cx6Sfm*Wf-3Gm69O5r@7qbrRaG~h_nt3eouYmO zl&!7)J~om)B=1ay^Z|&lmdlcQ+4gBxatS>>AdwH<{+b@xj0J)F;){jX-0a2t=5Wxo z0w@-bJSp~XvKe;7>S*%VQC1!qXk<72P|PbaSh8)~z@-YSb3=ZCR_@x{^O3i_u56;0 zVZl(;1+Y)W?Bc8cDA?WjeiRz_bdV4*F&?c4s99NkR%rT;m=%FytU)R^kaWljNHt1) zT99tsk<8mVGrst7>IHhQd+n8aTEk^d63;OG+ge`z!XFz-fcai=UxV45StIY&vwp)0 z3AfcUssa}j))gd1?sto4X9jf%z~UucE$%jrGA+dMKBrq9Wt|*lCwj4Cz~*iTXT1`u z*UE?85UEf3x7!!gF>{A;VuLHqsfpjGdtiS>TZ{~*PB8<6+{|h$;s-$`s2AG~Z^|^J zRNdEdoBKUwGMN@N;!FQ!w{i=-J6jHU9FRC}uAGEc+5xFYr+d=FNbo+!uT$TPzX#I^ zIjklYdN6}GE?#Yfw5*uGZtpfx^S_}q%@>(${|WgKoW$sh-=URB65*fn=dwd4IP(F& z0APuq4}>-jg9%Gtwtj1w*?e~wA%)T!%+czkudQTzxn1rf$2KFeW&GMA?4%C;CyFR3w=fY`|J-zcNBf_(1Dcv+?xw z0tiNRn_8rYKRb~6h<-n%rD}@ z-?3jF#|7zR1<$^UnY?<}_3e(BzCn)Aw{OK43;EIC%&74m0&ESpfN#=USf?`n%Rjqd4qu-9oU?9 zaDT3?dy0}tz2aS6mHKk+V0e2(!O6QiW6(Ia&hUuCy*_&-ia>xxfFoFQa9MJxBC1Zm z=L5=@iOb>a*}0v<7l+naiHRSk%$a~_-?y@tqc}vk#_K4)RElrC*fqgin9NW^QJ$I1 z&9=yks=brSjRLz)Z_0Cdc&W7BTY>QdEl~mylFjs#SHWQVjg$VLpU3jLIf?e$&zDV+ zicr8E@gpc0odH9b_OTU4^vj1vX_^5tn>+iQW}KQGoj4UE{BJ^Eg>MRDPL zirIcrwfkYvV|N0S)@)X(q4m5KJydYc`D_@%xn3Z`!?D3ETdol^&Vk;TKiNguX3%3S zuANW&S-u{#vtSv1_ovV@(wAnj4I?`)D0644(@so|1dde*7bWR^?=kIOkch1D6bCo7 z`|yo@%+5~fU;?H%2;8f%@com#2jojO#}0nSH1!H_rHe_0lH`Fl_!Ky zvbYalgJi>ip(5?s?uO_YXb?N^pYmhj5&H)(b_Z(3lk--#0$J`W44J8VOmv8!(NZ#> zi-ddlAQ%r=BeNem-kkaJRaB+?Kz3^bl6`=+;g3c_pg$6A>lXT=4@ynFFDYNSwz{8> zT+0VIo+wygAlwK(TrQGXnLu}Xn#*yO3z%cL5G@979vz1Ph6B*c-y5P3u)Wp5ta9ng zF3r)euY%}Qdbzv-bk8xXJHZb&rmNsjT^Y1`oIJ^I*lr7vjxdk??k~aosFWK5`2M?2 z>*J1L!IK{K!l0EvBWl*hDuuf=YQTMlcAcZSrD*Q7ClTNI80MrZdYt6+lTQFX;;Od7 zL;R^@kc8&IMkPy%jbCoy+g=z)fm)jR(ockUw8f}!cHgruOa!1&w}d<3CTt#T-9&hY z$qK+4iJ+E<6aseOTXNpFie`flfvVT0-7Z)2g1X#%t3rOS4md?P;H`K9I44m0GOmu+ zU2K(2KvQ;Ma?)iXLL1CNh&awym<@^B@6wu&mW#Oumg~(k;E?r9>Ed}QBR!03+z+u4 zXfYu=LJH!l0lRvO?OVkM>eZJ{>Lr7aHkyx4d`856mO=*`!R|`L`7u{l5`P#(-w8oP z*{Me9E%LFdClHru0n>&aQ*u`at;EC_S)yp!2kM2drH4zb!61Q$G@Pl^WKNrk6xEJkNO94hcMAo%#(TjK@VC)ZPQdb(U_qYfO ze=!)a<6fHxJFnz0AT%7_wXfM%lcV|xZ(o1sSMaz7BRPv z;=}8UjUVRiss21u>FkU1@N8Iqy(>E{O(%VBUYS;DC4HuZ@Rku*B|M86oljSFfp!|NS58X zt@K!EsgADB{l)q7ku+i=xR(>d&!2ndZP32oYD8na-ep~^?|i--q7733yEVl z)9Lkb3A*?xl!U_@!ixcu^e!^;H89}D{2tkVYYM<)br`ij+}Nl;Be3=pM>wv1}&FksKwgaZHd&e*HI>fia zaU=KcY;qs3zWh{Lvgy;_iX!E$0`&&1({V_XlU_AKhCjn*zlab#+r68#GAVspD}3VW zTxq7fyLNW&Dh1!`@8A1WJ{!fLy!NQ~vTMj>kMZ;>)g8 zL+h0jRNLX96wOT$;r$Km1}#mrC1#CR;7xzOf;+nd2>@YJ<9r{m z+(tAMsrreBlDM8&AFQ#aZ>G8Yv68!+ANpBjrmg}J+;>+u2$!T`k zZ$CB$@vfb;6c4d_jz8I+s&m`>R(<*AR$qr|DQ(wwW^gaqL|oz*I^(Fe)-}y1OYx1$ zh~X8AyWFGp)`Q9UQ@i|u%K}c!&VJ3sO4hYYko*|xez?=NxDB%D zt%KPL4T>hUsJ^ko$9ZP)w041m`fR{l9s8ci8zuS&i^;yWwWwu*7p^sPMIOX!8nwuq zIr6oR3$x~@8c-;ZDQPho%%@kYc;nq>&^Tyu*8bCt-d~qUoM6wyRQD!?kX-dTCwLyI!rDHq+j-)Nl(wnOdYhy7}Tp-Rve& z!!Zvb;u_TVa^-2pTyB6~)t$}e^D)iwGCOe%L-6^F>H4mg-+|6Lvs_{3h{scDUNQe6 z|9KscX|@}OtJx5-*J%x~1vyIU9P*-rE^6NZFMVUi<=Od$MJAQso6Z~c50&;T_Kj-= zd;G(EBFw4moL0x@72UvQer+R! zTz{XR+^REzgMkz76`V_7 zjFY9_FQOC8bNz=pBp@g1j&|8Vqjlfr7|;%T=0<1pDij?xC`)G#!hU>Sc`0aCqh+h) zW!0kl>fD9R*1=Bavk9kS*Lho)wSBr!d8Q%XuF;V(?x}bbw()(9$mcPaX9bly_l_5G zuIH#_2En`WR-V27Y@IZL|AeyZagst{_ja9z2_1zjp?ICDEUK^W%Q}Cp;l@17cOMtJ z9;lVmWy!|-h~tu?`Eb?l^FiGkclk4cM}fVinr5p)G@98>+}74s?ecJtc_Wj^U)Ppl z>8Enx;92SS`rlGg?3zVA%jenDXv^!+}}2lY|{1L zmv%x_0y~CQAW%Z;^OY|IO0tr*Z&PN_>6K)bL&d@#{rReQJt+4+M|>3)23kUG6FP}n zu7Ww^6NZqnF4+sUDpPtdM}-D}w3)DVX_4^_>#B@_31<2YEyYEh_JEImPiH!-9b&Sqaj@7ixZ3L~#bMqfwC4s#fu2%B z3`CV>v*An1edogXrs7Q~wF+h1vr@A&;SQZ=rRM!T!8ofX#eW&Y@L&xh!%g*=YX_C; zs|5^Nw{T?nXK$)Es9vAHotp1U~K0H3{KZECRhuDH=x0&i{*cLp$;c{Ja4hxll zB>tqGLywH?N0#H?r>%5#qvpCxN=iIkn44K}BIK!hz3ggF7a39S=`8NG4n}O$)i3oi zl)RRqE6(WYYg~S9K|QZ2OVYz&UKC9j_i?koBGLaSTEUBdRX;iyN!>hk$`z13{_(D3=aO&7Ovb6+TZ=gTI2c?{phJ88P*)0QcHz-R?ZI`m&sdWM z$lta2T}@1frbYR-Z|8~lZOc>@sHC2gNeqgdddmDKr+>{1E4 z^a6*wcKsg}Z^FbW1}8Q2J?gAuo1o9G+Igci#38$It)TUuhl}VvIxaf(Bd+`xDl`qs zcTR51ZjUcBj#imLZb2~Iny(LVs_s2qvFCyEv*=B?dM$Os`8}$O+9YII)(SQ4 zUU!$xZ>!nwV|yuOj)Qt#`*Zb;#8s9PBDS`+S^E;+(kaMhhhhBt1Xs|&cuY8u=(mR5 z6?j1L#%bdYE9-SU_8Sx@OIp9qxu}Bv_07Syz)yKdh@W+~y!wO7IG>?=x(uZi1Ve>Z zREy(Q-|5e5gK4L9%U0em0y0GI51c{n)`Cvh=P7PaT#$|;xO;z*I&l@6mC4cM%WE&DL) zV4%%RCRuJ}qo?g&>+R_3O^Pg#S&erl(SvI!xif(xMpT|`;3*U;HBDE(d`XjkxaNf8 zu_V^KKilf@8dzPwYAHRx!5m`FSyN@D4`)p@6|_Y<_VpqP`4yH^xndpRn0DmazTmGs z`o8eExQ{Or_4TdVk{{NlK9J#iNL{Gikm?$dwA57k`uvENkoWa&hYkM`JI}AFO;4=X zjvOK%C}QWnd^!AiAlj|WVMPg>RrpHn+v;bN_q)y2k5K3}(5F>D3}mRu&QVjJqk0L4 zo;kNhM&8QE$S_c=s;+iUPNK9NphiYZ;w8GX7f!tLFKz$a@QmDQvctwMC0bvwO74>a z{pxT%?ktT|<6wb0j7)fczQP!_nfdmtBaZ*#e0xl5e^Gtp4uKK7S_iF~#u(oR(Q=9i zp2V(=qiPk_#l5uNC*xc0+xQq5;=9g;yhh!JVpp3qb6<$T(T4ljF@h#kQC`+LsAy1W z#KYs)O4$BMLexs;DoMa8$6NOjihf)2nKlnU=8dRQy@Zx;-*mqBC|l2bYtyh}7D6>Y zk9-iYa))yAiE9w;%1y7D7(F8YwziD!Zao3L=U%t`6x){Mk3xAGf+m~NqA$_eNl79T zmXgyvo}b-ff1DTuzh^WSF(SoI25uiONO>uiSt-6G3}Z3nrU<7RR#U{5nE0IQ#3qf9 z*%8mH@sVt+3zhp6CE1$J5h~{@mS-V*@vehn_GITSQJM$&h&b&q=Oyx&);fY;uAp3# z{NYmQGqN(L_os$xD!RAv^H$HBAc!7qUVst^Wx!R+ui9QGejXQ3TV7#$&7Pj1SUyOp zRGY8@I^EB2XYrH4V%Qq*=901YcP~!M@k>l`oT7j)x_0ZDMit-+fc z+l#;oP7S%a!BTN?DpSJv_5D1sSBp1r|D>*+e|_jxk4q9oVuvAo6vFk_Y24J8kI{jxf) zuu3L-ewT&@t9zf)Tbgtb62m{KY6%o9+_WmPNa~{^im2;cTDE9Iv0B+xzRkzVV2oja!#YR3%?3(mTmD zVH(NiVVY>UTfXf*n0xD1#*8=HJ$483?1twt4$mGBicU<7VH@UHy`+3@o>jOlPNzAt z=fiZ=;(PDvisBC-LIx8enS4AbFL)ckpmMFWm_U+HcL!+J#F#zCPBp ztk17^$yPM9p%=&>HajU*`pG<2%0Kc>``>}ZTfd}S|%dGOcz zq_P3W2Ktop?Af!RLlp-BL8q?8A>DU5!Gvf7bIl3FriG=6t;*XH;Y^~!4*Kd4o;~@_xBS@=tiyHhXx*ePjro0J{jK>cOz7I2Va}#fE zZ3TvfWxI$V5U}5Nwwt@ew`1QTs>&e1;}I)NA%jQ4CFc--a`6YF9zSX2az7Y`CNSbls%U`C(obsh5xpxBLwg^x-$6$< zdBnk9194!u&KEGYc49`^l_hAB#?3?Tv@zNAKC_*SLcfc-;YV^)BSUVq?))P{9ajmN)NYBVuO%(dG@AsV&UU)LCfG2VR{XH5A3Yq(e<^>wxyDIs zS08b4X!5PDGHM{=U&WZ{9UI5}lDn|c>eM~xZjWJ}_3}E#_(HQ9-E{}gM7bs1zEi+u zTQGswivs-q=Ma1&H8vuc)-G=&G+5aCUR|`ruT@6p($AptzEm4{IHdj7JT{ z?f}X71PVKQUlO13hrSzBc0P{9b{Yj3BImjIogV1(pO_CBD>N^is(Zg%ArFM;wR zLS)1@r*xeu#`0?^OhK%vQYzB?t`2j8ZFw=SGNey^V|6#AnQHv9FSn+L-X?FtF?_m7 zW;WHwM-BhZ>0{UjS8fbrd?7F@a4E}@sq#X8$es@{XH+hVZn`WJyL$m^#9(My;iRci|y%X z6{R=RBW*xL;2VZhzi&CJY%Tcaw~Q7*j5Q1NuK8(ZId)46PSwQEn5iw>nJ_QQB!`}}_K zxTRBVrUe(}9=HE~ojY--f~4ugULNQF+rKZ)uKu3wsP;M&XsO@FpupCW*x#6H<=yb` zE`K!UaqvqRbDY3#yg6};PO}W-7p!;DqJ79`gdXLM%4UqpE2}FjzE!RJF)l-6w$7v7 zsufz>j%1dQ@8IkI`8B0+hdte|!yT@@dDk9gGi#>}#spS_O(8Y{fr?rJl>#MqZWrt{ zg*354*Mw*~;h{d-RZq?jQbgRYArtHi&l?C$M$)*K`wMXqfgyaMxqVq<7B@*rgL|#& zLcLD81JS>*?*#=Gt>2xus}#aG+(~vr9vDpSWuxnKv1BsnVnt8A+PYa$^Ajc!>%JgW zT}lSEwzltF1ZVQ#`3IWqYFkL>97t zbw!ubXY7MVu#TYjsMBsVRTE1``nR|#<*0#|@-;7M`=Hh)7SCgBei4Fo%k!pw8mf z3rRWl>;2bv7MRZ?-1$$`@6pnxORo%G!et7EQ=;x{R_B3!t@Q7!xVU0X{rZ)Jxhr0O8FBC{-3DFUw+FbsSkSGn zCHk$b`U_GJVu9ycr^W6xWj9f)yU<;Ru5tnfoo=*pCGh!O|8%v1k5K2qzDmv$av_-D zt9fOCDu6-Oe_=@2K!u!y*KswH@>3+UHU-GMo=<2o*4}{^B!VVHbYsyXX?+8R$5pZe z(zP+M6zl0mE+EMnbtd_Oq8Nbyk`QBnzT#aDpujmU1r2GtU8pb}L^l(*T9M=`VtltJ zDISu5@`d=yz4Yto1I{U?Ii9ta=bppr2#OG3JKpYx+ta@r&h#ce;chqi|IpQSUe2ZU z@GR^|+JTHGZr?>n>i|&Q1C78&ApD@uFD@E=moVxnhVU5_zQ7*rs{vc8a`GZtEu=uF zeRb{5o$-&#`*;6o7zez*PR@7J5QoD0;d?G~>(o*ZU3 zqUN4wJ8#Y8XctkuCF2i*6>E2Ch|>4s)yK2qxYv`zz4_gcdcE&6gSgw3^@o>mV`6sR zL=SN|EnX`?zkB-1UA4HR95cDGlD~(Fm>CrF1Ft-Pj^4;a4dA?vTlmSs_v-?bed{5u z@2MqI;G8yGV;8e(qx#v|rraWZt)07GO}$3VSX-O2oU6W}qjoZ~sn4_Py?reLkT3Uq zd!`lKGjT;DwBw)Z_o*!M(DCPsp?*3U=`jl(j7gX;eQyx|NlfzsFZ~L#v(f3j3eyPT z#eh6y!MA!0q}DvFU15B?uVTx_yCWAr2{KM?0v8b*pgH2TftS!{_m0DPWti1Ej$Js6 zPWi?xr=WzUJJ>;7x+rIaLy06AEYt?+USD8va8uYrqnTFXhx1dInCCW|7n5gB@C3GV zPU~Fx0^qG_#~bw2uI*ayJhtq16nl5)Yb>wTt7S~@WFz-5D(3nS;1@yOtR&Gxq^6?! zU4J|~hN}?3BYAzaP?othNkMHC|1zFcFrJ_@UPMD2c0}9jDNpTS_+?h5*%`;a*%vm| z^!#x+K)0ws7Hc+CpzQIG5~1~b3J*Gd`uiTOSJ$?>#`IY%jyPH3J5`FUuM^zYFsRam z?7I@{uNuj2Egoz(=V)X<1Wmx$-cPD?Y#?OTg2rx_kdBa0bm)p__kJ_Hk{IE9g>Rwv zKXVjCRJF1{yFWGE9HafUE#hn%MyAx!+{1y3f%>hV{jRQ!9j>`MBFDM8adg`WIwvNl z#!AkRvArr4rtDB6ZK-qH-yB)gX7I$jiruK5KBeHy%>TpvY{K4tZ4eXonp_SHH#R=+ z*DpKrC#}4NA&s)f;cbflv+2sV3sizl*Pe}$JMW1ZaGUT!Y4Bxhf30o^`xc!yv7mcE zc=)yCFk`1y{bVhEd@Wb_Hx{->TNKeduIzv8xab2oPZID~sI7iDL4nNg5*Qn1BkUgL z4YH~gUG%8Ha@wzNT=JEK#4TuOVqNvT4hL@qiz%NAS7sKIJtM^y^3{eG+afMPBke}h zB++FA`c+Qcx8E`9gogfQC;{!0IWU8gRNj4SgqBEf>t;q)mR|dy1su5ICmb^+qP{gA z+TrUr$LzmDprxwN?4JSF^-~FnM(E?h2~EU(bF!A`WZ|jwf`(V^pSS0YN)%=1k0Jwp znHv_=Cl92DW$KTGh>>celjqz{o-+*;Uy!({`~)f8=$PhFtur^B+KM3| zZzQ`lo$8ar)m66;t)`Nco2OYN-#X<8wR4S&?|qWMkNKv8*?%)MKE*x$6$h5|FN^ON zki`DF6si#DdZ)pHfE$V@2fVh?}K_-XZpB? zXn!j}rhOZV*bvzpeynr5OfG41IEwErdBsrt-6uM;M-?XH)z{&+W*-!oe_$gLSY#~ofEcet|{)4(j3g5Ys9fhu)n&fAqQ zyEb>=89Mc^ z5)Ui&I#?8UTWq@<%DcCQi_14x^T%18WRzAj$|1PatLu`4Ym(NL$Hg-G|~EwuxOuKOJa z)4Ynh9RsWhs)w4yZb@CVYMNtwiK3s$BMK|u*{{D@Ow9JUA8J^^`m}otNMAY=8+ltD zeVVuK*g<+s9EXKZK|JTLTw2~*KF37Osf4Juh^^uITw45--YO@nux@2z!=2{QABj9} zb{^Ijtim>!cM7ZKH?xxKK1^v8G-S``X%{_6^89oK78mGchj^YG3A~@}AFCNpw8?5l zpMHWm7Fyx<>$RR$&a`zU&bbNYPF}x0jSl3F<9K;z>PaqnQ@qV`2#~CFzJAtTLo%wC zo=4Ao?J*BT6_@koeO>$l6wZ;G~4&z~uySgL=zA5C+vC*6d|T;m$WVlfL>KcyIUUpcNX z0^=2L6|gg&XH=cf*)QH5dHhzo$>w6X_|3Hyg=J&vMEXy^4qh?Lm@dXlQ8>kw z^LpsxSe}G~z5GB{bA`(O^9QmqA#*Im_lvj7ou)h`XJ&6YW9!9ge4n%OI*)ji^ZX5I z69&3rG5-Vq9yN8Uxrr*2=zf|p5A>Hmg1X=ASKo_&I)+WwRyA(>6lo8{Q>B)E(kbP~ zK52zBd+Xs2;k8?2uc7^f?^5jkrf3z4U>cu^LNn&>!NyA1GjKMr2V2*9^B2aQJB=mo z&-|U5z^P=trT6HgQeM!nl-pH5bl5&vuaCQoIWwrESy}rvLp%F|UE%zEmFA<~&{JzO zWv8%On67pw z?YhR8J8OXRLz=SMu!l{i6*I?vSKzPbkSP&kV2n6*RkKl8LEUt8j|8?ksY(TL!xbl9 zVRNHDChU5KhAvvY{eL5|Os{V4*&*orXoFM3M!7ma?xi$z9(Mh(r((d)dUO-w^;Uab z7V>OJ2nhr7h6<@bIT9h)9rm-%yID`Tzd876psY}h?YvytW1Fh9w1Z^@LV@?2!Z7ZA=){nnN^{%wA@pxVF~!|X!wMG-;&eRDnY`a9|k6QK`R zIYW;vXvSV>%8vSrTSY(OHVtqkm%mN~!+vSg><02??{(DAsTZEccO#R!v7%;sdPd(r zkl?Q#*i|+qZQOUI>%&l29BsEKuO_`QnVD}Y;xC5DL;mfK3Qp}wjo4bJOAQ|MVFHjjn$&5c4%KKg&R&7KT@UeGa+>QIGC+D z`M-O3P!eC$**!SjcwYZ!iM^Z=?D{DG(ZHNZoZ7Rpi1QlH&H695zA8@4Xz10?^~-i_ zuD`H+bl0I+v5fih;D-_AKFZwvaz(nZ9KjcO#-_o5`vbi=$GLK`9KP^riU+O&eZw>2 zxxC%Pk)){I^jN$WPlN1X|hUmYF z{@Hqx&v7DuOPjhRdVwKJiz;0o!cAZ3RRHQPKqN87u$6Fz` zg;%+qslbRbqpZW=8h2@tatWSZvMU#Fsnzq`27{?f^Q1Uw9==zQFV!z1Siqpy!~%Qn z5HD+p_|m9%Cq`VGtYqT6)Wj0kS8L_9I@X}QH32e<$3SSSw)xlhXk*RDmQJDg{N6;W zSr5w3{Y&@d!lI@6jwQzAgq448e*50)N;!6syYlWy?|FxlcR|CCBC8*sDBehPkPGTa zn_R|MyVO%2{-~cFH@SeID4`x-=Nbv(yYoX~991S)GWGAj(pd*E13i|s%Wk4vb=~OC zSNf4LK14ktsC`a!Nol(-&cnB-&=gsa=7ID!LSL0z5I&>-+?)ZFu{<+Yo)-%Vqu*!5 z|3}<=$7A{Tef*~sDkI4#vxP{Ky^9dCSN19^Tej0GDMBSlR+7DUb_hlG-ehyyoW^PV z-bdf-y6^9GU)TNk-T(X^zsJKD)z|4bj`MSTj`w)Ip6}O@^(U%l2a6UV-TV;;L=Y$Vi^bQ&KI&W8RWR42J=pZWCwP7M!kPiRupVp zXz6b&%aqK}S{RO(4~P3{`M5@&t*lK>%EUC+JgG;zvi9$J#1}rX zS^D$r7hP#rZ8P_{PlQwEG)dQ2<xEt%5iBp;Xk((b4fySb=t`aOXUThCq7)F z+3zT{*S(5Q;k5O0?Z`1*KN@}?^7!X7ggQx-TQMpJwY){vf0F5WqnzsWfo-Bn=~z3B z-N^K*Le-;~Y)=V?rE z+|(1@oM{=jD?c8mQ+}SBJdsUO>zfc)r)urMy{ov_hk7L96x`nb7M<9h%3M>$#WHA4 zZSmI${QWa?;G2vsamJy@?-oxfa0ae%B`*S!Nm3}-IGD4OZ!Ek`=bTa1bV8?`Ea_6m z$nQq!=h=C`TUzWV1dYbuUkCaAr}mW9ff7EhbyG{lo=P;cQaaHa497UZrJm@wOVJo@(b+DFaTP&nM)l9b~2Y zPWohA9eDrxtaZi!KLt*@^P=E@*q>GQ*IN7M=P6?AQ`)uw*ekSi?x>Q=xWQw^L!9~L zl6sVu+7Awix~QMtsxNHQv!i7bX`WSQ<+_sbr}meWS;Rl5NQq5n30Vn3cO+YkWtxnQ z`=b*r3>&-7{QGYSSIaHE9c*&VDE{b!$68ssxT?9%g}A}vo^N{D=;{^{&|I;3l-NCU zGwjw6y`w^*T(X2i-?BqChAz{>COievSdJ;fw1lexu?<%U-yQpUSz|;3^Wd2y?QtBH z@i?mK>$G5NRYama#0|)8^!E?J<8SeW`WAe&jTqUm&Juzm(x>r0vQ2H0pz?mdy~U{^ zvH4ol)9E%L6Y9Jj^9zIC+YPjMR1c>jsVJVzKEMgZ#+hIG57(asmT>j;T&1uyGw5EZ za@OY#sJ|iH&3u1FmlKnCIppHi%H-v-y-n#9u3t$pU2oC&d1=iZ*encQ%fB4mpCg5L zfc&dd>EWy{t~*i3k@@{y8#Xh~S5(Ie{k*7v`Zdj;{$=r*^l{63PvxGrJIXgzSd3lo zFL_J)!vQOJod3`H-k*U|+Ba)HC&`;pCPg~r^z?NkZ{#5mmw}F{Ez$GFi*>6-@wAs{ zAznp-ZvNx&V~LJvg4fMk)z+O(#Lb3UtwQ?_8D_i^2z#; zAIe8*Xm&vcjk&Gw&o7z}_O0Fj4kt1t;Brt(+w-_bdP}D$&%If*ntjYk)Dx+G&UF^) zW?K)*Bprgt;LbKfrE;kb$-5l&6G@Wn<2x@Yy!^RHk?0#Z8Be7Zq7$KCq}qC|LH?H+ zHxyMx4%@VT8Rilxb!UY&E_QD;KUT0^jvhW9Ci#5gv5&3w250q0f8@ukcjbt(&OE;( zY4H2c+tmGIdM{pSNix@tsj>HXB0*#BYkyhFb0Z~|3>Ms$w<+FPRTXBDpI@GMTPrsi zBWb~O`Q53i(Ed-hb5>ZAANOW#F4A+9Wo8WYk>k2G7`}(n2#;Lq=QlG!ZnJaGeUUrS z@to}T@dp9)Be24|Q1!gKTh`T!K)(kcR>g@IfrX zuD`3+!mEBNtO`7&slv|k88C_+14)^x*Y>J08$Ysq5}EY(-fr@99dNdUVD2B`V|ayS z=aSN%r5!S#DpdD*$0HAA8Gkezsjg9uk3WWeprp)b?7nxPvd>5Hj|(|egjc4}PLQ^r8#s}dz^j&w<_K;J6E`@Glq3ybf%RTwm1EIiq!d=l+$4S8BS0lF@Ae6E zmDtD&FKyYcVR%Lbw$8l|y~z6j^)9ZPigogB7XdX0JcRtJxQv)WY&G&Y2Tq<@fP4Gi zf~7_t8QId}OLPW44!PWuRMekuFu_}tp_TKfbP2?HdR2}mP_JWRe#O?9*0JonvUL{! zxJ8reQGW{pw0FXhKc5_)1ZYY^_4ee7&*7cL-mEFY&R4EHFkgP9`tgyGATI}HSJfc_ z3i0q0)2;e197_2=MXP3?oD`G3>n3mvAHTgqn>%c_PR4z7vkw+SU(c@wW81j!^UJfD zzBvcl&1paG?K&NKw@q#+u{b0mJ52iPxoUO!MB}AY?&~2htdGAwm2`N|iAC)|rSmAW z)*)%>NiMbZybC;q;32yh(_ivUEFCoG8FB|{Mwrk;wgK*110PBo_h*{N3PEUjCu!2T zwpg`pUKU>`V98R^GT12aRI5jV->WZ^Em8fELSw8?ZnfwtnC7eDJZh?<`b$!Yt;@1P z`*|~nZ{;0oCd7HLQoR1h_B=oQ)terr43-M2`15}T50r@xMbJt}T6L#}Uf@k1LLaS8 zNNP`AH>?sFy&%da-<;I9i1fmiX~i-By$Sr@3!z<~g`%&+Q{;?E^UR(dQT~f2ukh_s z+M$e;)<=f^OZ_FMu-sjY&Jv)82{TJw1pO70q|XyAAIhc0XM1W6I>cK`F_F`wp4S?cjDVwzHKRkvx8lFga9?6+gSJI=vOz}3{rqmXM-b9sR zmv73bs-FF27CdqYz8C;uoI>E%Fz2Cb-O7RZ4WK8+e?=952a5>u*5^=d6CN?hqDKac zNCuK#Zh0u-HdNfc=zLEu-<|%!_2OoED=W6M6f1)_qzObJ8n$r7z+Pfu3aJd=-MBQSpxls=@>zytx&X7W}-@WR|24I(;tBo`^&ldhpZ z3MLIt1f*ZI*hfxx4pAh2f&n775kuB|o;-Yo>DBC}EbE)+!8k_SldgGZApa3CI%1%5 zzL}eU;?%jU8Rc;&;B=yDQjl$kxYpu0CWbHSJ~EkQnVI>sV?+}; z&|i&kF^IS^&9<{cwLqTl*s)invox-)(Qp}5RaG&AyPHwmFM`TmE zEOwU#zU+QoSk-Z_O5^e7fPU_Hzhgw_u&CydY}8rG{bo} zEnUX1LW~~Vc4c5Y@vwbFy&Nj+nnRd!Nof*him@72(Xpwg`a<<0{#}bod1FJv@BTFk zR!t0-dYayOIJwn@vIXndg(bmjv9wY8M|!c_71}u#rOe%quPpOIT_4eBYcgu(g%E3*{Gb^Z<6k1&5P5Fa9JZtd_ReI-aktt z=~FjJj0cNapZiCCU|H+QEi2UNcTK89e;)ceh<$Ri^UF|oc@%?WVb0~Dx#Kv3gv%tP z7(zE=!?r(n&CAO&NA>3MK7P;%Vygn*&bdTp%+KSy+yn)^=9j`h+9We>1nWOHKaiP?>59o+N4YkV00J{!U=}Bw#mA% z2ITS@-5ThXf5Q@H3{5JxE$5^IeV=7%7$Aj0`QhPx^$^rKTmt3fjyslae`iwZYxsxM z{u}_n&~SOt5RhFMcRZ4QGWQH*CFjOO`wB|-ck9ST>!3-Hy6g$kEH4r7W1$D0#2}(w z-$u|VC5B3BuTH;-6?UDd3u~N&8sp}YEOcGzpvN_>N#C9O;QEf+{#{U==Bq3$lLsIu+#{g{OWqY9M(BMsQ*o@eY+ADFr@vdMdh;fQ3wm<> zxennmiw{0qMX=F`FJA^3z-W?Crhdt2R$hX}0rzCvi0A5r%%uJDzPnUhCsGPs7)BLUH9)^iA@|-Z*^+1Gyy;4>(~`H+y5IH1 zU4FRYe8%7noz|Y^%?#lk&)wl^3H5Uyi*of#V5Es}njzY1Bf4n)1>!;Ympw zIxA;I@0~S)U(wY!yA}YGB`Pi;ydOzCJ?^oZ%W)iO}>;ig2 zMIU^IMae3(kzIgarpj;P^5}Q479d`Qwx>{!haocjC=@beN{QQi0=79vTG|k4V$UUw z3T_u-05ByAR24j~X4$^0Go0d4pt-&!`kG}n@d>>P4?|2*c<-XM-E4!*MA%Nm#EqfvEBUbp6-@hqgcec=_K(S?CA)FTFS zqS$n5%%W(no!7agMK=bJwFl-p4;{5nN0~3#X5&Ru{{)RpV^^DtjC!}!uIJCh*Ng zC2;7a9tgF}+hQf-XK`TPqlhUsotp2O>naf^We~b9zNz|{u*c;RdpWrOKHF8}?O--I zmlz6B-#|Zq6Fahf)3)|*Bu;=Ery0EWaR%1ZUgga*gk%h=FWO*K+P5)_zPtj7oiAS4 z-N?DFl@stBG*}xyk?U^z3Px*zf`YQV*fEeyoB>8d&-O=5AX^3^-kNy!BdWl>Biq#c zx_+_V8q=BFN{wnzE?dx!GI(MSAC;`cRr(}2MVjZr$U9*?QWOYP0}t^Dev+|QF3|?} zq`Mz*oBsZy)RED);bMYsw85qWZdXLE6V7s^7Q-Gj_U&txi-Bs7m!4K)~3G;`BwW%z@7d)(-aANlrISAkhAZvc$BfPUt)WH;xZtw##g^?mSiir zc1%^|J>Xst_}$Whh$VOL#85d^@gomVnX=;4rNkb+CEMz4nT)Tids8o~ga&~Lra%=SHuifPs-2p$%$yRd1`-i7Q zJ+|(^o8z)%dn@YZY+tDb{ivcd$G8IATsa0Cw4+DkmxZ}nUU~y4XR4DqsjnUA=@hbs9n9|8Puy}Jw^&+v1q#N5qi;2! z5cmB(TGoCP0>ox*c$88t4T#!TCl3c}zc8{AXGXQLt@BiML6E;0&zJDH_f8tK%0@w;w#X zy1B9~0xtHjckghl5b;4I^wZAPb$*Zp?md!)zB(2P8!|%ThF6bjKx~j}SG{z{2lS&i zHWL&LX9xw$&^VAJ;B|7&Ko9N9mn-){5$b(7FH`T0V3hdB z&}83cEO{KKXf3G8@coE{q3bj?N6qUR{1FCz6%}f7N@sG74E37SH+G+_ zdf4vWuL!P}fB(B=%*IC4vo&XKY{gxQh7T^ugx#yRjN?6N`m}Z-3~=F^CmTX&cjjlc z`?qFohpU_jFUy29_@O-?DuqBiDjjy7UEG({Zit{ww2$67&h41&&z}!Utte+&42j^? zw#9ddKsENGd$KP!FF^`!b42lH+@Q2R1{3mbgMpnKa%UKFIT3hX{36@JB>?r@wElh% zvu_FmE%D35hbZAiYq8@+o@B68q(o6n0<1rZhGI6wgj^3rP@kY< zqe@@+_;DIY(rA%L1>Af674D~#6{3g}<&Ls+%{}kg@LcGaEM5Kx2s6@s5|AZ=Q9J<# z7{l~Drlxn-CVOI5TKc!29FjAheax#>K9rL^zB0Y>e6`pn@5z88l2gEXR((bmB7)Yr zD6*_h{%LzjoXIDYh^+6S*c0>7O|w?l+2JPALONF~Yup&)j>lff`WPsYp59OrMViFp zK0elspx$tpUeJIDA=vM!;rC(=+UeX3o%c2{brLy{hKeobk33e#VfimX=_QcS9Le;- zBW4Q22a$Iy1>erw|!Nd z%P+mqKA2`tCcD-~%H~L>E#vgMHRbfeMU``fI_8i4s`VqGEbMqzC_0|Khc-=ytB1H} zlYe0#GqAHDYQc8%flxn`gj@>)zzl>F=sZF}_AeTprJQ_3xg`^96u%HJ?PzVjrPXEF zBa(4vAw^Q!+wxoUKGHtq2_aV$R^Z&vrYKH4S(X%fb~1GFo}?^&)O!Ql*!Gi5jjzx8 zsZARe+Swb$FH7pT^k5e0U?k8YWWnbaa?BV%A7uWjZh%4wJ0gCDJQ(#2xC#@^oMPcV z>}q8^gN3#MEagw?r`feu+iD~snq>&wbiNDDjD$zczqfhWDaj-UOM-8MoATynL>~&( zReiv~xw(?^aj2=w6lP#bcyl9!hX++pUS3Mk0+m_EXDO$O&GihF@5yj6DG*W9&;0QC z2kM|a=7ry#I~Luk#(Ph%;e+c0ddF|76RihhCZr0i>Te-azYfb4fvgfK&d98|cMg>c zoRdg~V#KhBTJ5Vsue%mK7WWe>dTd^{g6O7Y6mjH?)Ki+!e^L*W-+!V3-YVq8EIX}aF(8Z=co?&_e||ly$(jeZ1{IrdixmS<G4c0uX-y@A_sp^1LOc|X z_PfH|vOW2CR}g3NK(>BI$h*SF*Oa{i|caVn338rQ{asv8;RntjM^9xEXl{uYK;Aw{n;QujoBxS==>0rmR_9~ zJ=LOHBn741Ls1vvqkSjkxRS!_y3iEPwP}`yj9uH|0G2QDsQ0Ws>Kmi5OH*w$f1ifT z!$!fh>He)J3Ukd|$y=4a1C0GGT! z3d&=H462@R!Od{ht_!MrR{-_YqFY>R%?D8F&Z~HX)Z2HfD#Wo6qVvxtcCU)-e^u8I)!B*I)-X%@~ z4HcdxlA*|>)cz#d^K$n_VNMeCL`5oyCrop&)GcOllEn35||O{XTcPoE$^-p zE9o!M8Gw%42N}l8?zFog{a<|@S1Vc}A+yec>nyLkqma5M5Kd4d{;ZT*pwLY3|`@;v0> zkb#(>oq^AiMj+X5k=Ts_Pt0RMEzi!JFpu4e1dwLu&%UL3?%CKHivn9WH^Zl3gLWL* zJ_*WVv?5A=G)iZ(C1$0yG=knjaQUvw$^eI_4M_Nuc?~ULBSbWWJXZZEXdi!r9o9>= zm^zRc`gdm!a9a@pKUn#*otNM0&whDt+Q-=Vp?CXOYwyIUfvIR^@#BHO0W<^ZHcTB{ zYwhQ98S5(2EJ#+M{9W*!`^t6qUrEj0Xr-xnou7T%x3%5H_HdQ{)dqi_LQH>kG(U@S z;E(9#u`0#a?lB%uvRIVGqnF_`?s<))mA3h4Yoh%zn)OQFvOi0k>g{ z=V&Et$<1Moy}!gqJb(RaG^oE|e;Aoq0awd2=5UEnOXpVrOd#Zi5}^kA9uwD#iXx5~ zgK$8)JYRTC^kk z*6fj1^Ix){hW%|{4h^K*WRk^P%Q~S=%vy|6Q*Z7a{GJuC`e1BUnl~<%x5^r3Ywa7q zvP5%^ThlKu@%9cqE~i3&7@5UGfg6!>cYV457nf|7YM?K=pg7-|G~Je5$WvX#vi>Il z`jjce$Qa;x!l&|2-g70hDXdicXd?h!Mz8QDGwsl#+x~jHzji>w+Y5frQ#6~&6`U^9 z$|j~=9prmsV=-qvZ&!44pu6gUt&Sr5z}WbAZ`7{ht1Vk5n@^fPL`zbpU)6A}3vI_h z!XxMpObp}x$2m>zF}-&EFScm;K3lxGWHDHH5_~S92nXhOeK0PQ_z&rTIvq;HQ_P|| z1*YE{8z-R%jj|RjjCr3Yal&yU$D4v)@5+O4EREng30OC1m#;7*6q*kL^J-q}^RuZM z8O$J~34-7kh`BRj8`3H7oZm{a3$T8;E}c15b5|Nid|~}<-OZO^wp^bL?pPN80Mksr z)bX)`2p33#_nE_g8>@i53JUSZas&D@*4*d=8^eNw!<)}jQ>U!fRz8_O3rMq9l7VEC zCQo?afBU^Wa(B2q5+cvHS7);UWU!y0DlPuiQ4tI$*F3*PvL>|9kyBH%#79Qd)rz>? zOxCBDi@dgEKgPten~B?805`nir3tJJVuYz3Dt^-#a!v=z*5;H3Iy!OuH8oORe6!|_ z{e2$U*g`|bo^{JR&{-m-7xM>6925N9IS$q1K1)Mk0JlQoc)&=(bu-;~pVeP!&It*@ zE9t~qQ=N6AUvh;XH}v5ddI6rHL?Ll1rH&7A;CPCFcW-fLLl z?-ETb6d)j>jUA{H^4O2&x7#Zemy2Wz007{`d`dYJ(>H8YlbAi-Vzi;K3_Mw(g5C-lU6A@HoRNzA1YTyfL@~GK=1P zk_O-z!dm}5_4CLcIv`h=M_X>K4Rr09H?%x(ZGGAJ!+S86A}{a!tlPbN_lkRKy7-pY z^jrmh%?O=M4}U&~8OhKpj^T&u$^b96C@!N&%yqxgOXm#3Xs^qLWs!+b8Fk^*{O}hC z({o@RUK*4_q5jcZ!vC@Q0gPo^a{*`VIsm1iQ!y1R>kqT0nu}tphfDVADvv?OG&~73I&F9Y zG|%D)b=4rkyWy5y#|P9)`%aGG$@Mv0+vT%)$o|fb^#!)&`wfj1DV$I~nT>sT`%fz@ z-Zbr5du1Q`cb_Xd?i}=By7p*4d3pLFV$tx#|2xpYSx@WkNe{^^>Fe(8>gf+x z_L%7Pw;yQ~6@v-hc45eLQ?vq$1q z4xHnQMQP=I*cg$chgYjASeh_mJtIYLIr|(BZ{?Ux3kkCuVh|}PMwWW(%E22ebDqJQ zA(yTPL{Jq;$J)~o4ax4&ioV~BPxUb~8#{)`CL6449IOmE`vcog!fTlNzYBbh zPrXDaF=8{Ka)39jd)f+%AKOouXGdUULL}tL&&s{`IPXVQx@O`s#q87;q31057U=S7o;fV=F zlh2pBzg*bd27&n_?RdzTKADHjPE`cq$mqVY#H0P-_69%UL`qb_&Brsu)fZ&o*~CN^ z(u8;ya0&xJ^YZ`nsTQdwK^34(znGF;>t}rR4hE2f^HSwDs^|~f1AXmhA^|^?U`yXP zaVd$=2ZC_bsl$!;@Pn+-*aD}!{W3-n{9+{)-unrpsP+<9P9!A-8i5fI?9OPWT?#$K zaiTtjjUUA5&xQy)dAo$7ed04110KIDncMO}Oq>C)i9 z@j3eP_8dFI0sNcg$1Ut;y?h$_CPQ13AVx0ov}7)cr^s&2Ti4lDyc9&mVI^*toSZ(h zw1sR92dVXyw>2{rMoNokr*>I{?PufeHRIG>d*!P1ns=Kk((8qWqD$W(3O=DuwWXK8 zGp_V@z8+S;N4X_Vach&Gja2PGp_9>a=kaN49pjJD(7HdmGOG^66v;=rFVVaQYTb-} zzqYi}d3BECcpjF}G!1Xy+&GpkKW!ROg|TaNN_Z!dT=!s?A0m9ca{tT37lNeU1>Crq zO~s}+*a3XVYhr*2b_*CGv1k%$tpHOp33yU0zAJP3P zB>pD{;81Kf(r~&B7*#x?&)@akWLx;$wQ2)-Mw>08oviZ7Jo6%*>BD=9ip97}?XKjV zi6OgNdy};%+Ljt|%->l_3d$U}E(8uGB_~}J5+dm6;7WJiqEy`l9C$E1!G(rzfcX{v zHYiYSwlzLd{14!u8UY;q?EleJjOS}O)9UnfWV9MPfhlz=-bj0k^}hp+c2qwDv2FiX zS!blp{k&rHR@sxK=inUwX>j&XH4yl@Oah`>zst60b8Ra*?xrZFNah%b<}X#OJ!$Rp zz?2IgJ)G5xrGTwtsnbay9z3qR)j20nNS_W+CE+EOW202haiH3IQ0@&yM5b>qAd=qm z5_?h@%kNZGJ=yG_1=-Z@#xLyx`sYW3fEYr4KVSficY`#%Jry4|Iv2UE5!ckK#PvbU zBfPoZ+?2Oyq1c-4-Tm8uiM=;D&S2=^(cxOp;25==lhV`@Iz8p_Rl}U=ePe?jlh~!D z;UA#!ct|qONjwb?lR#`eU2k_4&7(m?9>}5b?s-{nofv1;1G-g>(< zAC320_oPXujmI#ZWxOczus?~Ef&UH$u&ccqbes?$!nQ=Zxc_#)BM2+l^jA~`t3C>m z0AOSYU2WfCvP+XBA0YuHCSK77c22Sg@vwLSS>7)L{sF zo}>GwWNpisUj*}Het``0F2aP+`{<~BRTgy+4XEVLbwqYD3@WP(eAfd-uw zbajS43Wp+V;caIqC`?OQ-dT3#0wjKaqwNlC74T7=E(sp2GFKleRIWpp8N!=F-3G6v zO7ZBW1_$^652!Q4IhP6rWOk4U523RYqF_pHyQ6k z`WycHeC#CuA}53-23lz;%Q1#C>8(YKVbOEpTS1zSYcnx2{}rOdQEr5ZXC9#a__yzl zj;45&LH|>ym2pOcqjzAmH3Sqy_j_L-l4^q8-^;>~<5b@qNdEG2zJf zPH~`JPF1L==aB@k;9i4vf$m`25Qye?yzdzTLr_U{>*4#5T`=m`{falA1ek?Ah$ISa z`p6TdiDin?H5_)EDCvZr(43~?@E@?&RScoy(i<%S`ec7qor@ST4bO43$2OvPFoFqK z;LYC`a=ig{U$OJF+At018#LkDal3~oU)M1l3R)2%*riJ#Ffxv*w#Nge^qabc-V9wW z(ty;hif-`6BKZ__Roe5Ms4K7w>_{W(MNm*J#Pg=J+2YenNrV-L>Vzny)IZaz>kI0y z0bI7y%IJW{sGHF2V=ioEluy2CwhN&TXFL@+NRRP8?){dg_9p*zpTU_=U^^NtwtVWm z$p2#q$j58*ULOWrAXd-51@zt#%zhJw5fH8 zgBqgWmT2oWmR~qmX;CR`Hs~gMi#~ z`P#LU0QmS0-O#lf&lM9$9C&H9=!FX#h3&#>3g^c_)oof+D+LDnHzO_}tZS$};q+*w zCliJrOr)G2GyM_FISFD90Q#S8c!kz-9wM&`yvFeH|AGpDpyE_*-Oz7DkTjK(46enA zlCi$uC7br;?||_=p2AqY9ra^d)+eMjEJle7Jji98L>J^)(EsWGIgu( zwa+F6VPWtp&7uiu~KeC%U5-Xi*je>-h-m=X8a5-<6$C9bR7HTFcyUxURbRx@=i}AC_trTmT4*id%gGr1tg1PI>&)w}Na?|NKGRgv$znSS zVk=d@rV^5}Jk}kpGuZZ}lZmI0U!CB&RDIRd=j=9Ftl%+F@e2mDiN`);tUjWGJt7y! zVOZsb*v>H{l@uhj-CFyaR|IH;i|r)u-u?P}MiA7R$b`E0*L6M#m>C%{Xy6DE$+^w< zeGzO5jF@EgCOlGKQh^AG&=S7RBPY5q3R{6_8H@BpIA=u<)E9m{>1 z+j~cG?OPq?I)KV3o2g7!Kj8(vPVM$KiW3PUqzN4osVnX4#BkKso9E>dgTg;4|3vu6eWT zCKDstzoVi2pT-Q*^LpD2i=V-c-=DkeTEXja4oshv)$>n;Ko3Ekp?SRyjHDrd4{pY?vRJr3GG=>MjdKz} zN=rmc{2lawZX9CeUHqe=<-d@ftUupD6qdhL-xzXRy_l%W_3R@>+Lc}Tr9vs^HwjW^ zCCw)51_Zi)$I#)hx*x=BPC-Wbd8Z0Wp9ovv=5BDCk-cNqrWwX6kNH;+*UXa8Xsq*B z&Bto4*-KS%KDUI)^p?!cANDr9MVrrFs>}{H9qlL@i-tXaMNPC)96K%gnrilPmbuyX z*{TYyRWsWs<}J+-hg(Qw_Z;Pa6Wh8Hn48tNo=CNq>Zg`A=>tKQAdJItp^J*sZgZwdzJ!Y?zMh}+mGbkR-jmaQa@xfH z=nFHtG7B-(w*w5&dmQg2Zg3HYmw(vL;@CERdLhD5Zv?57Hbt-lszPF*J)c!0|BJkx znYi03YPQYLx84fjIP0B_lVE=~0eUzXZPK`Y^}OBlF({NnGM8volukr?YJHchdyq+p z`2t*5WUL)}Ar_QCqM%F!B9TNoSq_vtk+wZpToVC?4m#eLOOet1fWLvUJ2s%Vfkc0Y zM=up{?xjw%Hk0Yr+V5CZMC2>uxG#e%1dimkvi%t#p*yFAsC9Lop{EZ4k=Q5DS$^~^ zhZaFTD69R0sT1G4i+OfxnjQEK_Qfp4I*cL-Srh?DOhfhKD9AqTF5deP0tFnTYY?7(JeCHQcCGww$?h=!NL z3QS^l>vZadoQtWPE>F^u%1Gm(M(KHDXrCH8UX%)^s&AT>H$a^s8OM8P(DZg(&iURK zA0@Tp@@1E{RwJHN^E{mMpkkFWxR5k(osQyrl}0Y74ZAc~GHKb{WtM@IxM8c-N}i=W z#rn_>t#_6>xJ{pcjS4b#xU{OHskIi(a;fk6k4h%rmkV8OTbFvpWs(mi-0UFuHX zt5-Ms3a<+#tbKp5;9K_E<_bM?P@5U+2{X}w!1t8O4K97BtL2Aij2IP%?=^8A7!cjw z9Yy0fL&L&m2VTIz3u^ne%F&5FX<9Hv3DhfIwp2I3bYg%W>ek!VnwqXBO>a)yln<0K((B^nZ}NMYKAuAlVhp`$FAcj4(SDy*bg7)({w z$3c>mgxD!XzQCRaB@pR1!og62lu?2|(%OKPAYN7lb ziiHfbvCBXUw3O_8Hrm~yi=o4}maB+(S95I3tIdN||7Q{!Umer+a9p~k${^S7xhl_l zb#!77I!GAXv;IK->9RpU#ZxV)H?!|BBkju51EErk&a=3E$FkZ#+#O7Vb zS=wic2MKHWV=yH1v}vcunFyJ(W478rKlrBf(9#)f{|9)^2O1*DjTRC3I!dP= zT|AN_Q5Y!?`LZgVVBDR1MwlvLn4qRgiblZqmaThef!#Fg@ZW#yU*F#+^_%i-E!s1r z>JJQp1eY|dL&7)tROyH2C`~=pnIyRv44qam^2W%Cw~t(S^8w^|Ft4yMYx*;ApLI)5@Os^tBJ_cRJ9~Gk$#G z1Uz@rX5@!1ya9~EwM?E?!Dj@wB+|wgUyv+3&o&$Lef4mZsU0ldJr zmExZ#yqEE?jmYyrqi~wsBdg(<XG>a05<_k^zhA(#_PE%)45wV)7wEQ2f zX8&?U;a7&MwGZfhs`vU1M0)paIia|7Sr7IU))}arr8|bS{AWJA#|UrJ&V!Fw4r?gLSW>1Jc;oi`W~`W!`W&l4z8xarE)&HorPQxzX)xcc1!c@7uby7f*!+;`AAe+Jx>b_~tJfscywmL8#p!oe;vb zWbV6eL#(M=Hm>xdKg!?3sOl><(2cV7Ubk`^0}aKQ?~-B1rmv7PE(8e-#l z{ROM$JbGVjG2m1e=}D&I7JoF?o06+3LnZ6i!N81{ZN|{&g-qlI9yu zEj@ejU^WdnxYG9c4;S|bo`UJKt`GAb6Rxqjv2p6RRmbbUP8M<{xlLQnPxq!h@%Q6N zCzt!D95ayxmx`=0PIPan@fd5jVT;&Z+`Pjoq7@bWhie)28ub1)({AV;B5UXvtc}zK zrVZZ-6L4@qSj#fX%Eq?DC=gj8icD|^B6@fwm*sbhLsO8JuhTt&P&vDrv1a4eMr!V2 z+XzDNM2#cW*zZ5XQxCpV4Br%d6~o6eQiaxyJ92Mn{OgHoK}>lEd7PT_uoa|A%6-l_ zAtxHj5WZmd_Dm*q=tWyo=Nd5*bB=}h%@0<4DR@zf@dPG@nI-CcK!)K!G;1ffwimK2 z06q~bcgND-YRyi^K25dT^y8_V&Z@V!*_nx{>-A-@X)MJSjQ(i)Yft@%Rp$#-Sh+be zER-G1-?qE9N)JEfs>Zd&mWrIwe>?Oykw?mBhHf(BnO?j=t#p4@b7`rc>s zS_?|HkoPo}q!ugm(2YtSdxyZ#4BL|HQ(k)y6a2JJ1E*;+hQjfmLzWsN1?b_yR*FKs z4G*Wcb!EGydN^D?wz0F{B|GePKlEYk*Dypu|Lq%!$FBGK-%c0QQFMEr;)jQ`jL<_k z1t8X8RhV-x=vVffP{=E|Vlp8kdIN|&n#3VRCwD=n}p zu0L{9F>#fjvK2b}lO1P9gb1;s((-s8siZeIBZT~dax^0jzDO6p%@>p_w7E3&;&=9y z3&FsU^cLK-LT5gae5{ijVU?A0NshVq8{#DgV zf+JuJu=rU;?i=w(;h+X7FO<9QRC&2mGKl}(DV(}Jak9mXJKLZ#NIo)W94fuAXwOYI zM@WuVxGxneKpzS2u-7H%l`22eI3;=8SEYdK-VmEo-0dE&^j)2fBw9dj-Il>)c=d=R@-^M)T32)OgBrjUZBi%g#m#W^Ms$A zuo+74zCb(B>>t{YZm0wIvH?YYDi`-2{GRniYPoRJOq03fDPyEDd75GOF>vk#jU$s+ked z29;efAAgPh@S;hBEfFeUE*oV7*3znPZNzdPWIFoDI{DXp(&BJ}rNR|y0?ogtzP`8L zohFg8u+WZd$kKFrEBsi>E;}p=u}|EUj*|v)qljF{#KMEk*{!gW$EOU3SH3!ty59=3 za3=k0%XiyjCFkRKwP31lT_lm#tTL-)$(UZPvet7PXWy+pTqH4noqfSadDozjOrTGE z-j#pjHHV#vW+}Yn0H)=&xURFLAHyOqaxBalzVI`-Q4>7H7j^J&bOp1oOo?-H}L=IxNV9^>0v8z2Z-`oV{uE+ z7|i<(Kx~Q-1hC$CS07B>*w1BW4AotO9x$&UcAq@&I)YMBJSHen@2noUuC2F6s!KV! zHjcw2o{mp>92L$__qK8$brA$Ux*%$HT{Bbf1nNPhqadQBrmghDQ=I@r0QOzQj&`OeMK4SoHpPPLPiiPS~oJr@iwIISz*>O(A zf{8c4=I`r=Zvgg^_{KoSkh%_^u$qVY95t7e7}Q?m`z((FXZ}K<(`;Lv$&} z%EUH!#A11B(u^Eo8NZ_0WhUJ}2(zxU;Q6e$#Io8E$oL5~rKH;jtCJ2N_xc1Bh&}At8l&)LDs&#))O@rM*t}&| zb<7{^f%XMwUt4;8=bI$=vYX%n$yXUf-hyp6s0I?6jUmBg3oRR&T$$ zuttC~0yo8u<;-$oP@|9^Z2q9S5~B4GjsAc8auNfiM>5u^pAL%Nv-C>;tS!c?TCyEdgp zhcp8w(u~m?jIr%|-NrfR9iQLt`}qF-;qmam!z1^0-@C5sRnO?y_A5Ah0DM{c{g*P}0E#5{HQ+pMu1I zjjCfcbw7$qW0Z;#09`W*+0aAt7Y%Wk;n{wdiVau9*JD~lz^5S?=at^@cIP0{CIFbavFGh#8F zW4JO6h-`yY|IOCp5*N4B^aJUhtm4ERMmXg?p&#{vC2D2-Y7BG3~k)cI7|D zE}E=b4VL3IikKZEz^vani}~y+d4lu@Ge_cE+!BqEd+=p5xc`v2OZDLNyh!pOzdPJu zg+x)EfS_LxRnqBO8iYRp@*;ihkZyOLXOk8L0^rr4rB%>@S5>lMQ2PL-Up9al2$O>m z-$xwNj(qweIlefvF;7Z~ z9ib2qVOpTW1dM&%e-z#=1&{c_VDRf4?w&BO!S3>8003W^_M@;2bUZYtNrLDKP?Z>m z1oXFc;bZ%N#B-EwzpCKRs15ItD8wVh#$^CyP{-&5kSgRoUuOw}=CaUk4P}?vWl^Z) zN9+D>5EnjX=RkaTqO&~zHv!qS9sS=4$UmxtKoD98;uf0i?$D0Nt}m7Z17pD6e$FZ7 zexc4XBh-(=`~{S*hA5QobqOw6-xnzAuJ45%=%T};pYs3k){(6@Mn4}Nsg{+j1*rgW z?99?vm2qG_+M}_`cB!r<7d5pukQAzfFrs@_rgqK&%DqctuU8%K^skm}Xo9Z&q5D6f zF`&GXc@*DfZT9zBMyMDyNXct<8c@6=e94<8wRn zfMSmJ{0>sik|Zxc0TbiqPkiuwb`3BHzslOfGBcQ_qg9B5empaidD^N)bTO#)4-mccWO5S!H_E{ITGlS(0 zr-M$W>v{5r?xmX60_d7SAn|lE(q_(11wcQ ziV4YtD~EXkFSFP>1fcQ)q(Kc(%Ylf_pghf*%bthwQ&Vs}i-TMn;K)*TA3X+`>GA_3 z8K>p$be%aZT`T1cDi^m6NXILO`|bd~74Q4;%N=mW18K%6QRV8~6!KAt;v z#q&M(VFY+O>FFUrF>|kSnC}kltb5mhOdNPFcS(ES$xQ124tLe*=O5C{@;nxkfE^4U z;1l-c;$DE+a(&LNN_Xmc_7Nt; zgi;#70d(29$BJX16!RhNZCWT&d=E(8>)w=(D#j>>ndIx{`Aw^DEsgJk%E2=!0C4!-nwyP)E}fJGo8RsQ68}9 zd(LlN9_Lk5GE}^EYhPg4v6qPmyF1Tc-vX}Tc?Xjx;<&)LSIDOBM7mxvfPNlcq71p| zRyxRx`p^|{Bd#gyljW;`_5wjH(xc8ml?V{?I;3A>Ukf07K#ck_0q=M_*TK+rZs1ys z(|7!4T1xz7?^fOWa(n;(DBO=`v@^?M%ftnJggrWE_EAWSr7c)hQ;U8~D+n19_p*)7&}D$?&dhMenU(2|2#D4Wc5iKi zT7q!3yVn&~s@uG+6f-CJ(oTGw=%C~pI2cFhy-<#t|R6w&^+?cpJZxg0fg z+QP`L58EDxZgrS8+6ZZu1niS#uatf~5J$Tzm7mL25+`q>-Kd-^uf~L-_T;nX6_G}+4K&@{UF3r3Pi22!%Q}TgLwdrdZq0d;{caC+n)V_>S?uW zxoJNDB)kQ!4gBArBcw3aehEmR%~NfWTl(30SGU0sgqDpQcLFcu5?8;Rf)>U)46Yn4 z5L1K_ZQt2Lz#A_Xu{iKSMz6>!JkH4fDD3hB5JHDDl5Nz#012usl*Lhi_IP7WefD(k zctm!BX6D@+FgZZ*gOc~ok8b+Il^!fC+_H+$Us2w^cAlBxP4eUbP!zc!bq$dBH?p`C zzc*AAj}_2&z$ffLT;zJUFicLXYAn*rhE676*68ykzD>|04CVjuyn2Rf{)bZR|3yU zarrOj5%UA*L(D*NaazN}YcIUx-4pQO>eqoV)82?RBw`b?KINg0y!V%p#ui`PBq6qe z{7&9{!Ws%FI~c1@Iu-(m@Ss!%>9B^$WN=FGqi*OzS8aQ~u*INP2CK?UCvCQT=HCo^ zWa(UrsZA3Fj+y|{QrBbME#%dF7glm0AsR*?h%dQO1(l8KM(PxS*t0UYlRT@h()H!N zfVcp9DL^y`a`_W?pBD$srmbZEwQLuatssNTv zEUx&)1rL?=`SB9dm2buf482W+NjswzR`Nd?-$rU{&pj7F4UCE3Us84H6R&m zgCfV}RF>l1U-?nTPjc$aUCP+8R`WhD8eu(t6LUmLiFb>aXMfu1f=_b^!0qs7lEb?K zF{WiWk%Z0AdB3Be6U(n(TJBo4h^Fka)Sw3mNAVu5K`H_OFmPN)wI|8o3%%R^a;D#* z^tUs;#FBfuCv3+Td~Wqz^u|6Iu%lL6{=ORqIzcZ}C!X|5nPCPd`Ex)+9%=`|4!F!l zTM#-c+%68DP~2BrZ8ohAlgmvy&eEbNI74N$``{0_Y&<@n=SQm^a&V|X4yM|T@s>6b zv%o8_I6|5humi`Ay~w!3)52mr$?#4+NP{O_1+*qX7m{q#7NW50{Bxm~H0owE%bn!s zCC+i+?Dzp3OEP2)fFI(>i|`VeV~#+B>&LZx#j%=z%holXCFM$^;mBhlShC|>JiYcW7ixiF1hyJ&ka zBS~MweeNux&pVvtz7RQOd*So;FJrYTk#9Wv-G|pW;wx!ecO>EnbnJroeW!3QDV~DL z_VygaXpcRBO*`)lXKhOW8U9P>$>y$JZv^wa0 zvg6&WLRpZ{N1-CLK1U9v01r34V!IEh_kDOF^Tw0NHqL3m0eQ!u0Bz?P>WKp;b;HIM zX5E2qx`j3YM>3o7PLU(TQXu6SBX9`zUBX6FL5 zNyVJz?tZEYJ2F}X^^~Tqjo+D#hQFN8DTJy-w`AMkug^HrtY$zO9ar;(a>%%NTM7`z zh14gzixr4-+P(ezQ&d}!YSz}W<@auM4Mj=|FJ=6~E8jIrJ4mtnRP`2i9Gx?bid zrMh{qrTAkZ-przNb*%nt_%yJrb62_!Y(g47qO%c2x_3N%(8-e$6Lwrp?JhrMjE^;J zD>tOCzV_SUn+~^mUDceqA{eHbGsVin_u73fQ{CliciCLgwR9;N=2d`*A_uC=GfW&B>rlFkXI=@c#}D?Gn{eN5aGu@`z#QgB*JBel9650e~1X9S5xp2!;GnDfoM?A0_JT+hEW`gj8h!UlR&I zmFx2XP3AyY<*w(gZi7#2+i+lhE3vOF=@n2zL>(ibbna$oog+xsp9AJFu;i}YF->QE zkTycQuu6(R@?WsEJPv{vRc&I4GT=a>#hAH$}q*#@l!_f5ZHby0Bd zAM7G_U@Md`idi{V6@fGq_=sL$RU#~~PT}fnT z_RnQkWq8NR>F2VWH#%MUCtYW}9d$IXpMI88^Ja)DQ6&?7gK`sl-Kg%HhX_Y;QADpQ z#e3y`5BwaZC-%v}BMaQ_6x!Q(Af)zMHo-7&Q3%ZUy|t|7GVSkK-`@TD^@Y>ai=t0^ zBJVDxJbS`J6qSn~z@FW*Xstsfk00OZ(%XuMAcJ|BzRXMn_QwVi1db@e^X6i$r5$;hr zEXiU_U9s2)CU46I>kg2;IESR~PG~*^8sCv`V*}gt?IkvWb!>`f+4+E|w)8ApE|cXw zd*1Httg!RfUa_wO|LSp6~iPQ&GY+#PGbr2Cx@pD5x>?NkSW@ruM`<-Y|d-EJ9vI3cMNGA)Fhd=6G z#y~R+z=Mte>YB4!>YFM~*)xQ#+{cTL>Gu!qqrCZE zwEd$;(c9bn4ZMu6jCy|PGiv>?|1zcJa9}>+!K$dc1rjxB^7x8Gsg?2cM?axGW$lb$ zEbdVP9{>d9F80kOwJ_b41F3hLqT{(bz*M8RKd7a~7@!}dSJ%4Jjj}I5(>!3#eu|H8 zH@EMG5KskbwIp7+;e6SWH7Q`)0e+1}fmswjHu*DqVWsK0Tz0cr-t$9}LIymDVlhrhuDCtH2lr(F<4HnH!3 zn$-Zh4d#MK)a-)`lTLRelV#@mGM;rghP!5bo|IQ`=@CzMQM9xBTzmW753lnC9boxK zuGEjOT5|4g%fp8^1YeK8a(w)itfzYh%_#iY=X5$Z*5iA32P%>dx-tj#L>vQGCYzz# z`ug?ji}3J<86i|tWmf%gmp~Oia2O5%-jWbE8nkW#f!P$uxd36hcFn7er-4RYhhM*O zBWn5zY`0@K559d**wik>=feK+YQ;TbQz80qk$74U8dZbL?L7?&VAF+n_aQH^c0+_I z{Rw&*sA)Nu;epDNG!6j+QYj(8V{NLe__Pc+Xln&rQUA!F{#rXLe?|k(?bv@rZ+Ovs zQsNcoUu#B7om-PGychR!^91lU(acs?L&W&U)fqOSMqm2b@{rVkI|=|c71=$u-AvOQ z2pUQ=73(!VNBKsw*aSJO#|xCy5i{$_3dy zp4PWfVJ92Tm&zS)(A$*heBxKVgJNpnE|Y=2mY3T<0IUK^na^INK%xVMe;dljrLRs4 zJ0rFEjAgsWl?TgOEAi>ZEl*D1U{+wDAl>%9llb_tHbU&Wt#5q)4xTjOf{ev+MRbUyyCkN7iYcvkM zl6^_u1%`RbY@QOdP6He z3go!2gLWJsFgJB^fLLNZeS8{k8^!AK4Bj`0t$59AyVr763G`3cIG;Ot@c6FhE!? zUZ;O*&yF8te6^V@wRw@5Szs==$E)vRk>`-Wl=rTTGQ9|Z&AjCjg znh&wjkA}gl#>q+;%xVCu9PIWe7wjf`c7q9Ez-@yC?dNO&+O~NQL-@DMflik)gc!l- zdnZ6+7weftFd6~^Sl@x)xW9yYmE?3|8Kn6dge6dIx!Y5j(jUBjwR$rpxP-ACuq(_U zr+7+2n?)K%&`5fGtT5Ri6j*<_&m6s9Y;zR$1*j?H11fQ^Js@KqTlv-k3_?y+tk0a| zZoxXeSE42+aZd}kM*yeDOou}H7o6+~W4%^RFeg{G8Z3Z4Mw1BO7%3rFgAUJ%C;*Vi z$25d(gF$Z7tAnLXEFCK@H$%$58sq2HM$*gH@Kxmf>xL*(1|aRTIbpCK2dyHtZoKMK zDzVU>#{} zyFdz)Xa(*&x5CE(Lk$v^9a#qoqYcKhEP1LxKBhfU(!%@mp|j7w=a2toU%rn^ayjqf z?e~wj$Q?31(mDNqGtSM&elgD5R6hgn!`+V921m*)M0p7bf##^)Bo{^O+JVo27lNZN zoq;uaA~Kf`Gn$X? z)q#*({U(unM$Ak#%LRIg6((koI%^$$4W0B(hk2q`*Ur@geJ{(R7NAl4qaiH8T};tf zJ?SY}?)zJ=RmV+jnbJ?ffha%3=6*yU%SH1bk~W$wL0dW>YtdX}4fM+oLw+i2-ZE?6 z)jZ>JA)8V%@Zj#%@v@P{pa_oo(0Dk-?z8n(55TNtfPtyPJ^-rdoOOM1;Q77t)nCA> zhD5hvsHT8-$MxEnX}XqeRF*W!o~thRd{7d;AoaIBCxAUkL9B))^u+}&LKFK};8G?&SRf4Dpye3~%D zo4TjidcV~it9p#N{*B|8@;tcvGem%S)8k;jro#yha%syw8GePG*3r5Sck?xzFevpD znwI>d!kg53#p(8WNS;{N)XZ$zJTB*_18tUtnzZl60fZgyiS~pVy%ZCwY+_=PipkV2 z+y(XFfurX9K>p!sgH0QkgILg8#ean7LZ+z03;Yh_9!A`_g;@K|duE3-7N!0i3o^01j^;G)cCv z3_o_&R6J8VI~cS;zk}3XH_z%|s|7YB>Ws?1^@RMCUJ1*~$3QDe93oT$kGXZ(FVINZ zuW~mqA3X;8XOPkRMCSsSVZK(lb#sl-eF8^aIwN2dsto4!R=5mdBfrUqJ(-$2#LUd{ z-A8tTXR-tIym?|a4`sUn{kS+m?gbn=0$#Exw>V8n*2qoTy?1X7@Kjw|{XD2HlPBph z_u?MEzDdU@8p3LUVbAws9pkU#5&iOa?;e3nnWQ|Z=N$!QeEUr~tTYjpkR~A3V;=PN z{s)4*Z|PdE&BBY_jv)+8Y)z{@;8F!l!T`m)ljqi^;%F)W_W`cIW-QY9ue}0LNcoQF zfG9^41MCE!zh)$H@PM|dZ>`qh^H0uEp0}@4xgz^OqD!yYnfwlh)B7*Z-lev7Z zY)3MfErMAg$B>fZd(Y(`>BhNSz;+}U1f8|ne(q9 z#QlpPxCxO6rI$@75@3&6WZ8od`?=(S3M>R$1Y)Ng!WQjyBbDo*7S*oaEN1`L1AH`T z2T&}Hlc{6jmUxO@C%8$t0V7DT+d{Vk#t++}=u~Al=^Hvd3K>GF@`l4H6{p_kz*A2v zlpZF+XN`ec_bt^+0j;T<$>zqb>z^&)%;7{8&R3ghx^ys5x*B2Ig^GWLt@M!#3w&}{ zH~)*xUWubR*2!IEKfGTn7e_bacb+K9{|DKJ)hx}@!no-CkXY7$7_iOe8=8J74Vb`T zf19dfz;Hmj)awHRE{!XVP{p)>f)2pA&IMKr9fIY#ObbY9JOeXw)o<;w@tO$=8NG{_;hxvUBJ$|0g`qk2yj~@5)#3saho+yOls=25w!z)crYF zGK2Oyz`p2`!DSuN0peA?&}%PI)jsEIPOi`Pc8`?+$Q!(EgG<5aCt&g`B&csOUzv#w z2T-6{g>RpgTU-RBtN3LBhVB;4<^o_~`cwS){Z(1W>KXS7clmEF`&0&f0z2fNp6D`; zOstn)fWeHW|H(^Qpbi4SqFbbQcTem9LXBUVVt6Ng$4=w?q&O9f{f~l(pj1P^Lc-#i z*lO_h14>_&{tOys8+rYC?o@9G)o5VA;r~wPFueWEc{&$Z--5FABa4WosE&pNRu>ig zJ^rJot2VAM!|rD39fc-*E3YrEh727aNtj^Y7G?IZZESC(5j=}PPns30d zodb2T*iy%fMw^{0zf+Mm{mtK^0WfI14%zJh6A8SIUDr7j-9fU#9sdM$vw-&BOOH_> zW1{$PKYCjuS+E00bITn2xn(b@?AY)lNJ>Rup92339G_@lKB7M(el=cVj!pyd zSUK0$bL3Ufj$8&4#opVqze0<^@Gy*ID)jz{e~P`;U5k@0R87gi<2QM=4g;>c48Y3| zy_X`@yEfb#z#~C_?~Dtzd+v+u^UWP|n^~T>BDyXx79|~NmZ!aD*VF2?zU3@;{;|}} z=MPW0Uy?6pe(D!;`4Q~l@Ct_|u357T$nHEi7OLF(Zg~e#Jw19C)G*8X06%)!zS;a1 zQnbDud*-qR7rAglKQ~Dx&tx<=xXK!UkCuUK^aJuYrQLfke6A3LLEW#5vHT6+ukASU z0a`*sl-=OOp>zP1w(s~iXxHMFZk*698OM^D=|zDmDUKIxP1&@ZN%OLjdw zRm~+iL!4u2{6xB(-ZQ-xUkG~)MwW)nm~3UxGmWFPWsWMnwn01>i*FmPpl8Rndkn zz5(^wW${@`!NX>g+6o+m)7Z_-d~~776)4#W+{@Mt1V?!aS-kTjEgbaT1^=+^=h=XL z3{X7He?&8ornGj)w`YfUj7SR*@PuK2^f)DAHy}r=^izC3=dNYsgB_l_&u7EmF2w({ zFHq_RFj5=db2`u;pg!U3K&w-iyP)u^^NAN`iih)1;N% z%ZFm(Z&+kxa0c-dYkK-?r_L{IOKtskG)vVvd-1BkEFjN*b=N+2aXD>qpI?^ppKoEF zrny9m*(!PDM#N`Zr{1C+!l@$z!7%JXd(ef~7tJP4)C##Yur$V?cIhNgiuHobCpUQu zuOb0**%3$q$OIWAs#HlZLRtY}WkMQ9qZ|@X>n(rc4W$GBo$lEDfdcEA={jWkogN#`K%(3P7+7h~IGzDzi+UVAe|9_i32* z+xckA0?qViQ3L&7Wi?8+HJ7qkS>o^Rii?_$WBWJSatyjSK-S@QvQ~JyhE>32X~1@e zyy#J9$N6dcr4Eou!`(ebyr}&Ipm>1mk;%}jCVw4e0I36g07#hxs2VB(J~aKjoqx(gjo*p#D2^USbchJBtiJc#zNsjxyYNy9YR#k@(hT z|CNG1wLI)Zn!kVK(%l09(NpTPdm#&||2U&S2Xtn}3c5XjrEMw+>Z3_|EDc8z-Bf`< zp0H&*gvR1Cl0H+l0W=tasA5Uya;bv>akf0En<7@(Q3?U>LFp2}#HQu9ryZc&Hi`H$ zcY-AF9D5FOy@y^Da*N(FXs*4eI2LdvMKu|)lp}g{*IpZX^dCW$;g*RK6HOAJ5xXm7 zu=R&6|;zw(sxM!rP7P}W(S*3&4xsCMi$I<<1G(_ zt0_E5VDMqpG6FPCbbl5{%bB9k@3)wk2Y9`?NdQ zzr8~l+&~lmc9C%;q%Kd88gg!K0}>t@@R5KM0gw#e(XtDmsa3l~-4BwX={#85~;XVk4H+}Z-~_&YjXKLfT<0i{1v|b{MYI! z|8|cBKpSpC9peOIa0lKiX;@}X;BPRj)upO$j9e0VvBC5B(|{_NYkigVW4flbIEyPv zc7Ef>*#XAjmv6~`1( z-MkKz)dCyIyWJc!zds!4Eyi4{SUWfCDDp`pGD=@Un97pZKVSE*Sp+Ao2D1u_t4XCXQiTVNG1ksIh?|Nk~ahnrgAz2eSX|J^VAkyW(0KX_ih+GLLa$8V{*3_G z!yk4-;vcuO@E!Hkv$mE>d}J4?e3c1vfS|Bp*gANN0K^l5s+lB<9i2>(JPRdz6S=+z z`ehxa@FWHPChh%8B2M1To$FV1NCai9E`PjgcIe9r?vhRL6} zHq-%|#BR4XN9=gz_3j#pE#gdHi#DY}1#p0-PyORoe%~Aq#^g0E&Xx#gCWLHWJo+|q zaD6Y}l4jQ25p$j+*&k)Uu0_d^bmT!2LB=j>+S|lXKQIs1?84{F#)O~aIdGHO<&$rhjSq*ElCv>&W+_+i2 zpR}ja+Rnws7^y$6pFO|hzd1_t{kFgLS#!*l(qKxr5vcG{4dWS%IpPiU_&MzsMnuk+ z#?L#R4zoK)5ifA$p-;K~58QQa|JJrmq~Lrv;S*qGT78DwoR`BtM_XTV5`MMteb$~?< z_Wsf8Rha9%NxOFZ+3?;JpE6;}=KpxH09RbgFU-uuRpyma z?STfMKs-lN14bEfkJ!WYH;tSDIW9z1s6)xkP-{4akmC2rzO8&v*5|*zH-;>=(=9(4 z-3ocRLEoZuH%Bjm2$dp#++;C_+5Bu_NhI#966dFb*DhG@Iv|Hi&Tl%W1cx2JP%TWc z7#QVh{3TWU?~4Q|me1IYLN@ZNAN+QZ+b<3D@1b~w-jjHr68ufES8KanW<`Rwo$Aes zZ8w!h6vH2$#U?cQi{y){HQV!$m_NBVzxxSB`;T4XychDl|9RQMrOGoDqX#`E9G%bm zqMzmjX=(RIHFRB@y`uiwZL@MlDVwe2;7G6aK9?JbX)jCMY7nN>|5_9(OgnTwwq%>RBXJVDp4ik(!r7_%m(sqv{I83Y2;oEc5Pjh0gm zx9CCvQV%kHI%5`DWGBg2`>5OdIwgT~AdQ%YaZy5OV~w(Dcc+OJt3~p5*JWPqDNI?k z_H}Nd4^q~T&6cd9R(<+LD@R@S-*|cC{LQmUFJE2PFSz>Z9QOE#GAb04EOb;O^vT&B z@tzHcvtPy4zdwQ5nuao)Tf91H#<-tjpxhKzyW`B6`_2;ymyFM1wOqs8QW&BSIsQmI zeSRf!x@OfqyLv^1Si4C`yQi(ALzwHXCav#?T*QuO6SJx_dyb46%h(di8#Ncwd|t;r zLOUz?8#keCM7UvpzO0(QQP8TB>+WA^PC45v?$Sc}%N@Hov7VgtK5H8^ZYUM&L$NQ8 z5-g$I2z;|x@6oR%EA?o{pI?7}ErdW{IBCq=#6L`$-*gJ!uE+9Kw7k)-TXS8u>cLu- z6?{XoWqqq-v_wAu<8HJXl$VZ=gcrT(*e&ws8Zh?485*!PlDttZNS|k0G+4fYuSt2- zwfuelEMonhap?l-w3O(U_ji)^Ib4UOEDsz$u~oP4@82IPn4viaZYfZ0FTERoP8^&X zdaBPd-xm_<^9qAy6V`8{`Z{5jIL70@J*yHQ?Xf z1$ui2Is>8h+Luo8T(A}IXC1zu^sb5FT)D1Ht7J=kSc%V!8yl<1D-3=@HgRITL@I!g zJpC5!a2~mN{I6Te=1UlBQCdfMyfP+D;6jAok53d1F3^5hbZa`I4~$@{?wMdPZ4bs& z%M7_!T+Sh^F8$*psUgl5sxHzOPQy7H;Vm2tMJ3-yKlz-&1t@XYOP*ff_ugyVzkkr( z|BE|6T$OfG@OlgRuNRg(A<8@mK2nL*mMHSLf#BHXZtVNU04rf*+eS>@qx%cf`mVN> zNe?wQm)!D4mX}b`#^J5~ggT-U!F)NQDI#77uCqcpvl8?Mxp8&ppUXbJXQ%w$?7mHj z4=rDPnF|Y_yPWNyQC%_;UGf~m$2)}?4-FxZkYbY_?k@EEqzU~p|3Ys%JNK%&OX9Zd znD*qYStbH=<-!dIQT{LM#dFCMp<`a_rx5!bISOY{lWmi1?qj?DyqMgXiG4HmB!ow# zNtmW7zW2qa`ZZv6OzRe-f~VE5_sdE|w%R?!YVg#Zw=E>_Zdb-8339T`IEcbi z!f}d!E(Eh``ba@bHTGjZPa+@Ykghl+WQSEX;cSDiG4hkIpj&8L*a4)P`>KVFzzbi&(bZQV*(JHpy! zeu~okbY_)gAv-l4X*|JTC4l5F`}-Qf_(5nT2x_5{Jp5uM_FBozRK$dQ%OytIj-=|d z(E1pho$`Xk!zXBvvMd$g+H$VgGqb#_r|RQ-7sUB6Xe@;%M$FMS67zG9$PvqlOBP) zx^OrSy`QYNKcWPScsty`+H#P5-`@e$w_8>OV~k9{qo|C&WD>VufkP^$^Zblvl2yU% z=)_>E&r6m9-Q=p{&Yqe@t-WGT0vOIa`xy6pnDh;Q{P#zGF()hc=XT)^dRg2p({j1n z=Ni-WKs)91tbO%^erki8)&O@co880i8*^Q$lxX}@%(Qk*$b00mnTK7f=Ws6f#w2aY z&kQUxCa^Ebi4$=$e{YE|&v+~8HgU0&Jd*peq)xL~kOoqz$w`TysmbezbJ96DfkB4{ zS)~_!R&p|uOWN~cC3W%V(V8YhPHyXgw+n4EoOs%r%4muIQMYT< zZs-eMi9*oww2M({8xt}`1t2lP30FOg{n@xKPDL=T5Wg=RGFt29Uuk)=brl`>=fbeg z;G*MC!lw^nXkBSO)tJ?hV5+6842MsHI03&FYTY5#gJ{?qKs4+Z(q1v6XG|^&k@FE@ zQi9xb#plaPC4quRH&E@)P7;^iI#_0BZ|Nmfj`DC#`C+$+JK7ol zdPS}(0&MLEI8s*DiMgyR#T)9=s6dw^Z-!9#!^L^GEBGpQ`=duwk*sCWlyy-V%-{rV z+3ANHX98ThZmVwb)L$18N!~#4m(UZ0;G|qV5$@(+XWNpba*i49+@;7;>QK8S*@sO) z*EsUE`E(>V%L;wek@hS;Zw!yAKWrOp}i(_C0=EpGCJq zc6D!m)2tEeS?q#HaYUSP0H#}M3DX$e?MfrcZv6FDPN!jB6OqVnaRfABOKQpktK;oRNOy`!qY5zfX40rRKF<)djjhRBq`ie??5&FueV~ zT-s9c!nq`S$^D~2>yd&DdaPY+$)%guu=qUPip#W*ULiPd*}vX+XLQOsBCfH&Y3@*g z$m%7RBb`bDqD?WJ_8x%gG}8w_gWQPEm(~|+e(W!J^h}MVeL>#e`YQ6wKMu7wV570M zb6+G6t&fKAm-*G)N7@O(`)hMmutoC~d?^K&M;mPKARczhG=`{QYFQ>dvZq{j{vB@h zoMe2;!83SDmc44f;oQC=I#JgB>W0@@*JV1)Di^{kaifdlrERM1 zmfP9?x(N^+gYABPjQkTGqMT<*i^zxJ+lP>M9V^F&EU>koRmkyTb37qd&Q61^_f}*^ z5{6GuU)$?%Dv$?7kz7_+kbA8Dx>(U^`&2=;5xU`Jbll=(B(jF8F4}**)Bl6_?PBi7 z+1Wlh<~}i_*dk5i7BgmN%BA)0XT`+Z3zx{%RpM=v!rPetTHcFKqJ)?tv(Dj5v^?o#BG$yw{H^SoSL%EPQI)YPgHKNUc_J`oJv+JwBgo7g#!4*vBfx6&-d)n9 zWRVbFu|CF}Jgr3e+J7H4jUbhbT#znVeG7lCWEiydq25>dKh|6SjX6KECE9a3SVNCZ zARr{1(UO;3S-M%_R?0S*Ki0pa6r8^Pva3R5@~LTFi+}unELg9?6X5(Z8{^>p+#%Y! z#?#p#WAv#hW?_PaTDq9P^`<%&tLrJW<+Q6jTWn27R3=ht;f`#x*<1%Vp=pscf$OfL%h=VAnO#hafD!HfQ&uhc1lm_?xTzSb`1-$h6 z^D`1W??bjSlCi8wp9FOUOS?jDj-i&F+ET~oj4bd3*IZ|`A1~8L3)8oNE%D;)4$ak= zi3r}Q1T`iKcEV$Y=L2Gw2^yb;dIy}8pf5S$QCbp9-tI3?4Uw`ZC}N8`)ml}-66iMMjA%Glqu?nxp-E810IeQkORo@w2jHu94tEYcjVQQ1^a)=w zyeUs+NLz9vMB1l~ z&?0I-Hts$OGJ}Nayz5TVRk;&!XI9;$ocuJ$M`y(*F|BWmDX)|finIf(hyNw;we5Dj zq}rCMf0JVGdT3yNil!N4?dCIAOo%NiPJE})6oEO;h9$rqn-{_VE1YjCeMGe&(yq!* zHBCwG(Bn;1A$POsVJaEDRupvKyw!AWSgN8#!UM&^2VHS1Q!7lB|EOyYI`3LDg_6h8 zoBn${#?8UfABw~jz9ZID$FGOHIQ*?xWB*xU{XtU99;fCZJIYHK+-#7ZgXFXNzso^= z$}d+VM|qn}%@Y>%7fOw>uK$~Z{%;QYzd7jt=Ai$ZgZ{tdpb|jU%)*mu2i5$`P1Xxj9;b|vizr{jt(fUM6B6}XDyPtuW1DTMNWJt) zxMZYbG_vjUUzzF`HCdW(zA@FjBtlka{%{8yWn((nZ;Nb-+!&t1PxsxbXq`Q$P$1}k zVUP_TKi{iy&W9M2kZZgeZEn1tIch{bLeFD@QC_LhXDtugO3YCcJYw{QK+YFpg!8Y6 z!(2`vMO09URtY&vbFpMGB0_eMgQ78Fs!!>-n6-|~M~GCGBYJb3_L1vTEA$A?wk}3A_7@w)-?#Xah|7tv78+9sUH(66Z7EF==05A)XF{BVlJwbp=$0YX^g<#M zJv*7`hqd*g?8rSaZ)-ewUxk|)hKv*KjvEb`J&+Y!FU!f{BRLX1q}Okk zbe->Cy_z!1++gZ=;0pL`5mgW&i&<;-BQB(=fLltYws{x~+8RaAOW}$N7Ja)-1Pzy2 zP%x11W%zxFtCQ@^sQ$=SVNpp<7<643pePc!3)OgIq{>H7TZdLEcaWF8MR1F`hjB?* ztm}0hALWrNlvJAbYO&?K{SexQb{}bwU<+!OThU5=_ux$osm)AxF2EzO79L}wlD!<5 z9#D{KT>7+xEJKzD;9roJnK@ObHVoEcSPUO>n)(-vXk4iKXN~Z9y59o6lyi}yzgSh! zAw9*-%pDCazg#pSpPKDqG>BN~y+~OQ%bm}7;wmZ8lG@x}M^B>hj%R9QTXdqj8R#p1uEX>dootQ))ZgT0- z;F&SAaq{DXFLcNb6m9gf38=eZgfmzs(;{)&E4g-+)tvIk2<1Qat?S$PX;C_(0M$y*vwDkzg z_-1^gEZM-$!-SZ+B{YF=Z&;@3nR=AaZ_SvkwxvG%l7!=qT8!ug<&jMajfJe`K)adEI?D+0Q=VM`@uoHg|l{3F#qoy9#{@Zd7a1t+kc9 z<*JApbd`V0`MW>&IKUfcsY1cg@fcDIvhk9#0<`1lBOPcH_*POeH4aUWs$OQ2WM%lG z)!S@NpjWA^afTEldT4EnS(C(})X5@sW&BQJ203v{hJ;MYy)QZI%ZJFbrhDJbpOdus9y``%0BB^wluFKGNa4k7-BXq?Bs9O4Hx>LV0OEs1fZ!+*K`D6&YvU@sddOHSWG zH(ZB78lt)}oFC0q=BM4Xz8W9V)WISF7uxZ=&b`#YG&nCv9cCiw_|N9cr206Fj@$kG znVN$1`D*l?xGV2c$O7G>5#EDtsF6sz;a5^lTIkGot!@-&<#IH(E95T@sOPM83B_u$ zh>rZIEVce;L*1A3`-OC$PWRQ*hBf@#X-$;=OAR$!G3&X64(i18eEC&6*S`0D|7f>o zb25EaISZP!{AF&rPBBcGiHV<+M@RGUro=HXYbNAG&A8EQH9`FWWu|;8SHF3hKJshH z!G=n?+ED9h#(BmY;%0fOL?-SIQZ=0VG+U)_yBxOJV#66U8aO9GL(o#=T8E|_rpdB! zgj(O0nmp=%sv^QG`%8F4LTydlqe{>Bo;edNVUxcH0#?HaimKp1hhON5*R217*&q#T z?ENGF)>(w_wu~F4k0|*|Mk1hwuKm~Q8|%s_rV#NVSH)rdwIiq;&H}>LV}hQ4?AA4- z$k^52-C&XV#VUNW|Ax#~%t=x3&6XmySYdh!R%F{9$zM%R5Jq#v!?9c^T-4;)?(Y*! zB2sLsj83ALE-{G=xJxY_VFlYTNGUi(yG1a2ir1g{_hs9>vAimjEcD8ofG>5%)YlkN ziADjN*kfgT<@ca5()JF=9nbxbUc9xa{eYW>b0w`(;8q)-gqi24Ut>SD)eX6t)4Nq8 zF#PMu%Ecs=Um&p|7F^zuLpbqW^MbVD>G}AJG{0kVKL4ddAGJ8KxLi~H`e${N-@Cq; zZHMjQ#g3qT?XgcQgCOxxa{Pv9(L1I-XoW8O@^Hv_8n{Dm5#D%(a{ zaN~X0d*pc0+4Gk^Hp!D-GjvT8+I(9(PN5r_It^s?{}hGxUea%=lg8!+M=|6U^u_>J zp_0GCz9}ib!%k9& zRZbn!@Y|6q+lt02HuYTT>!&AdpZJyhYSar!YmOvH2QeMD!+wb)F;oi0=5B8uY7xqHO)f)~d|Clhw9Q1Si zTFvjKtlSR&spLV~&0(tD0g5?E1?5}3N?rH2D8g;H`rpQH_0ztq5^yoL%?&$!e>zeP*zU+HLoag`K|&~$u+_;qcmX7jk#RGCk#`9pN;*}2kn2LUb#>F1c9 ztpRxIlEFGLVsMUX*(#Rc@WC&Eb`|sose0-j512KssQelZ1Z1GTJ9Ri0+RqLzmd_mF z!cHhP{TdG7Ka46gj>O>tFu~;UCtDk{+x@z9N*e_kR|fAe{9gHW5nEGK>NLvHpU_O} zKzvV;!qMw-dRXLUTF26lk>vFQ3?h$%1i-0KtS^EkaGT}NDIjUWoc>|mwfU+dSdyb{ z)4z=m>KCE$0im{IKQXs>OY44IjH?TZdqO^#pw8mq{6sSG-9*@jkiI4}>x<~v>73H8 zt>x$cm>w)Wmf>pipF6Ye5xtS^XrPUzGaFwSur;cI-x+0t6Qk@RRQk4ksV(7rY~)K9 zQ=y?~z49nl-0X1wqi}kM9ClrNA)6^B>XZmPrkadDu=_kG7 zK~18dUk~6h}s$witmm|9!3 zMo_a@+k#d)z|+s>uL_UC4|wchny^Qg{2%t-JgUj7?H5L^r7bE?YagOjNF8wiB2__| zQcICKAhiz6L`6Y`5M_o;PKXu-1qGBLj!;F2ObJsG1u@J4Q9=kLB4G?kAR!5v&kj!b ze(!VE`{56ZCAUR=ktfM*TH^6b)0`zrbt$3axfHkbNQnIz!+)e5sB($zIaRSkr}*& z+0$s;s5b2)3R~NEP7zHjCfni;2Z>a>H9t{D2Pm3bWQPd_G2B{3CEz(ZKc#5;n8q?U zq8E$r-{}<;NRzQyxWN@3GIuV%OtMAC^2sT+rC{v$Np+g>ZY>9G#kDZh zyyO8P6_foUNns*Rbx82%JkZLQIRs$~t%+$|mhc<(UC>MtH_?9lh$f#&5Na4bj923i z^N-@kr5*U~S}g+qT+0(-j)*B_>cn*o0xu1JL!WvK8;i<)pc7V^v2_zZh$D!fT9dWi z9#UB^t^c})B6lF^Mu&39kfX-+DBa&THLb8wxGvHvkcjsR(&ZD;zpRwW68ve!x)Bff zVXh>V(XA5&@b4FbTLy0NG1Sz#k#ObRXh#x3H9Toe6*OJU4pvS{;^jXWG@D1oV+V%f zs6}RwCqq92o)5*3mmQMcJBZ4M)7B!Y8nK$ZL9{OVAKmL&-YxKl_^S**!|=^OI)Pf? zVzMp?&CjfXEoVn0h9VYahxjMdF$XEKBQG(UP0sv})PUJjZk!Oe;I_Joh+w5^B9>3- zv?R#b`MbPoflZH&2p1P;i@h}N)Y0o$t}Q%r+*&*3;q>?h!-t6Zg@u=kD9t$fdgXlr zGr1ZSeNN$nsInVH!naLO>(=O`X11!PtJ zv6y!I2>MZY<$+k=4)YSYB+WdTs)5Iegq>WjvU23BnDl1qNLhynJAA7hCtY|;e_w+~ zG~89<$l~e?7A+2XS%uIxC&Vtt)chWHTcpuwp%|ksiin^XCEC~5%(rpeQe~ug_~tW9 zZAMjjE~dV_T)J^Y#ehG(CDs%fkC~K_v(MpFs327kaPr$}cZG2O5U#GEsGIkXa(*uvE$v3h%6OT?@SHD5LX6NVh zXr0GsQUD-mk1LH!z)kh2PB%EDMFfGWWt9a#C@vE@s_;7j^Eu7kLAAQCdhcUQO&;zy zdC87JjuJyEQ58Zj+&&!h8*UM(6QA#R#AQ-T zONe-ogCC%KMx;G0IWXyt86K4+i~QxULQ#)2zgfx1Tty8JUDvEtMOQx!XT#7eY#~2shw4qk@jBvwje}U1K z#^qCt?G*)9_xyWynjH9mu|#jR7^A8SQ&1_~2Bu0(ZY5G3Ri{+aNa32~ z$bC4N;=BNtvaIPgT|IT;oHy>W;?un_CM0d_HPk&{aUVq-y`Bz#=>!*3^LNbBG@7SkTh^mh#p#iq36ToAd{`ZX z2c^b2Y8uDUF&-?4I7tKp*tG*H+fioY7XOyj8ACPKj1hpbz5a{d#}M;rSDo?jGuS@ zR(U~0tc~Yu`fa*S6U9FWJwoe6>lGeX2R~NIJ5=5(dEO?BrpZoK33Jj+(M4PCRcjZb z;`X;(4f+GGR%l- zj@?WWtI^x|T@qo_rH&r&47n|j9=s^TE)2g9XSbXiQkic5NijHo>hJVOnJ|xzp77;( zuf3*or%hFBYEXh4f%>tzy^4C|%)nppbHPQa!eIp%Snl}{KQyXh`W zVymB_mga20>6gKC(bR0!+l}}Aj+JmVk8wdhLb*eB{(!;_H#WyZ2Fl~_2b4sIv4w`oDnJzK^EZgHI27W=6p;lj$EZo>O z>U2HUz~GF*j^DTKf8VP=J1>_aFz}tVwzPX>?!@0CGB#Y&p6@syd6|6R@4*1ZHSObc zxeRQG9!*2w3nX{HQv$4=tN5EkCH>`;c}v6P$j)6g-z|0sKQLzQR7xw?(rK}EVD(xB z0mNsXB0@ZkcT1A zh?2CrA5+;9930N7by_K;)hrS)4@_yVGqLKaL8W7~xxAh73eC>0k+ny+Ajmh|HS^wI zngb@;4(zsqM8s09&|?pw*0Wh#XJ`y*(+#GwH)iyvVvC6wg%*#~x{A;t_`W#6f`EH4HaQ0E8K7uxK{nfi%{Mg8dKr4 zitHa$sSI}lUt$XK4@s+=j|&F%CUGjGdi{f2;nc(>G@(<)d#EkP{964$2fB<}?}oz_^}tmFnc$ z;+_J}$v~0NNs~p2Y&XWk4+_DyGi2)Fr+C>}X`*tewgifob;{QU$~wWx;67XtlqxUM z)XJSm=E|eQxL>@ux3J?S{RP@~$q2npTjLH73JfHoPXw*Kg&hsA%kdH6Z|Iam1hW2b z@X-m{U}7A9oo=2^&XG)Us0jvd?^ZcsZDc4;yVq1zPW%%MffY)FKt1sO{1uz=rM+5W z8eyG&3jaaek)sZKA!W8+-(x7=SI+U)?iidxtnmB8@lPLmb$?=i!cj=D#OfKuajZ9NleYzM#b0TsEkjH|xQ@dsoQ z6dURlZVuxef#PK9VC{H`WcNz==9MZ9n5CK3#bi;OKg85PpG8wngWx4vtNb zZLn@w5tlVVRj+4r;j1%cgb5|sC4(0-t>H})rzYQpZQ7kx;)`QC-2_fF(<4w!7l z)!eZW9eN!OWPrpEGQd0EVt-MkqWoD1)f>9S z%fw;4Y_oe8UMqDMY7}yvG5|d|s>S~C)}0!A%u#n}-krIb-w%75WD0WdOQVn3R8`<7 z>Gd|I%l+7;x(>Q1guJBM4d>8W-W95g-G>XZl@pG+Q{(xz`EuffwYy#jmhJFpuXZxN zb3(W+NBu98+`t=I)(#>kUUJ{n0GnQNb;S(GbEEdY?R?qa=EuJmQ!Z=DlY1Q2DO&nkHQ(CK15{#)Pg)f(5wX;!(s_;#e*+%N^Xy(N`5 z9B>N>|Nd=1UmLCYeOrlQZR96O?@tpc%UA^M?F0LmlRcGPo*`nw(4LH+af2t7TNs?a zAH@>>5uL`~|0!Hf%qf$`=sKs|@hy%1zl=YhYv87Dstpy&j52jev-J8J(3pvyvZKOzAeJAa-r$Tw1z!HB z!9GKB7;UD?ahq)}TI=Ba&-5uChy4f0?z37bp9xs(Q<&Q4L|w z_~?VD4FV0M(u8vQ=hq|GYqOC?eLtA#GSuEWh(r^0n^?7HXo=Vo?CC!(?SS7F?Ab-9 z!yA_BO7_2UIV|6r7XjT-7$ts3W_6V zMSfLnWVGo5#`G-Ir`3J(gPQEuRO%2P3ILx*xWPSPB+O0bh|paEtVI@IH{dgk{W7D- zPF}Vh0mDB|F3LF$gERVm!{m>KbZ9!TU-d$^u!Sbwr}rlE_%=PxO^T%-^^v6`$MTPI zbpgYWnXf71 zylf89&FYRZ1WCd-GGPwv++NyR8p`1#V%)DyM8(ulCwAR(^{PavUvc#ReooH|0b#a( zoKAj(r}{BMuLTTGPFe}MCs3_Hm{xe#{8yL&iV*>9Peto zr5QlQ*5J7LYwxCy$|;p(n%dI+)aor~29bt$AY5I`bs7<0c8xF~(!-;L-wyAOy=P*w z6XF7SE*e5-sLnD!funi(RoA%L*S^qSANt<^mzAnuuIvF;fgz|bob*f+kwMUBbz%isy>BB{Ct^`WpI zvd$T9(PpABHCnZ;L$T{TXIs%;lx&FBcU@!4ox0%ooIn52vj3reo0F@$K|gU)M_}fU z$5ei!UE~#ZyOqW<{O}t*`)%dMX$l;rYtI|w(=rYgA3*5pC>jA=c>^oY^ms{|J;(Eo z-cXPs@|&=8;CKyo<-5S1Tu3A}GPMsPFZi10Qn1Xqliy22*v@5?9$`{FbH`W)Y8kvC ze7u&LsK$Q7@FD~^=MO}a>}TWG;O8mUx4_~Tf9Ty0UFJ;9&DOwm>8W~bdfTf>wDX$BzL{hGphIqd|sXHz%)2VYYf^~8!;kHP_ zy{io`RVbNLJ&{XLE$}Aag!tidvT(f_;zrCi6O-I@x=+&)ITH~r&RA;^7&2DEE2v?* z6sM@S)+ZLF@fRi4Gy2f}2hli8_|iAkJc~qV?Ru;R+28BCpgm%WXlV`8JBulnPDCUMOU-ph!%ftuKwSwLGJfNVAsj5aN5dA&Rk}ZQizRO2jgC`Cn!g6f?hjWwh-#icE_z`R}sv- zvd}y?m}rdc&t^kodJiE~jjeXtY>2^fSa2D%qqwZAG`*wGot7*^c~c9K(e@`TqZ8c{ zjs@s~Zi?ubl3Gn3&OLbrSh&dxU-=!&mPv`)>c8rlf2qgZpSA#=8~Yl2($hF!2JfFc zynI-$ekZM~{LaWTMEPxe24R&4Ta`iJIVm4~rMd8&iYXZ}Um3!X@`shjs|dbZZV;K= z1juLCz}RpK%g6r>_)A(3WE{=^dtH>;xj#!^Y~JOiU?)-={5AWFJ>V4zOl0?ByxkkInd=LA7JMwGt}*)n)@crWf<6fR3lNE zY!~74#Q!(FXUwZR56Eu7zUay}?eI?kBYO|^8|N73C$-^XBUz27F-&V^;#9rK* z#6O$l^i6EX^Q?7>W!f0tdmK zf2B9}D_xSr8~xsHDHtOo8svJ}eO1W`1!fH#LHomP@Cy^dgO*AC2xT-#-}q!RT=)wX zw3x#&XUME5j1R-Xs_)z2_1q?WkGEOy(_YQ1et&*2+cCliN^bb9hB5#yA^x=g5YkK( z{OZ>PoHppfm9f8Y?nIN&Ux$B(;BSe3q;}Y|7l@Qtxjy0ij7qXZTU|Ns@U9;7ZK8LR zs8&aK^dH7lK);bek2*oa_39u(B zoIPJh);*~Sz>hI)Pu;rzsiSWPDQ2A(D_84X!Lc{B{;`Z zs>dm!p^eZ~0yGSF6hFTikY9%nFIdpDr2shm5!+ z4Det7w7-Aw>G-OiLSscm3VhQHliQ{~p4?B{9!JYY;7el~Lnxz=1SD!9SKb0|p{FC=v=`G@B zUVvx0g&Y{9%KR9`Yp_$5UBZ|c1TZ8F@}u4S5H{?jk(qEw7bv3*sA&H^pA^rd-G@K=*# ziz@(6yJJW{DatPT$yeHDn!HtcOaBi{0(^6Wck$?rBFOjV4}u9x{|F=%3(Ob3yHUoH zEu3{9$w*H!jIhll{6+sL0GVFgdXW;3AJ7TdXb<#aa!coS4o_6(TwHaEurjeP!Jj`B z9ZeaoOsF7i6(}f2b8{s|3qS5N1_sA#!JHKjjA1Rz%O|0$WqP(lV>AD?w!r9F8Mqio z3;7ziDS&YVSi4-S`j`J0D~^jH;V4vXi7|XhNM&+Gj(Guja|LBkZi7^3whZAD&(75m zMdgYEuOx{d7RuFeJYS4g&3@{@)V-sCA;YDfIa?LdyF2;rzP5mvdzH4a3n0IAk#qyd+)6cjZ@88+scs{kn9iuD>Bx%SngQgXkI4g>-YCkpo)p>^~b1u9JpOs(qNAaQVYoPSv zW>IOeX>+gi_r7rUw+;iWLo9}nGaj8bvI)0p1qjuyLSKEh|+KO-ag!uA^%CJk)^YAuG6fcO(_WzAQJF6r*+-_69N4cR$2rMN^$D zOxM*&to>~Yxe4#E46ivOnPu@hSzAj(iLgvm#=};vbcRv7r z!mBrIbWv}j8#?)A*vW;2Vlr*$eBh%JIhAia=Bn%C23CF$CzQe*95)l{BS095xn$aB$$+rOr+88?d1 zmTQLLN>y5T;I=b$y6s&f?afgtTY~zH)>_y)<~MBD!-4KoOX(#EAA4>0PrB4tqz_dkuwyJuuI@q+|Y`~?{_AF__FUA*Pfp~gT zU`8!Sh$5~;FzzQQlvBMqwpkn)z}5V9zQ$teT3XdIg#3^w0M|$U*V7n}Wa1c9jmOn% zr3~E@tiXrbN*!zB9wO?*Fft6ISns*?{TJ!+A;c;>WY3K;&zvUDa!V0tHnH2)X>ys# z+%pebvhrnDS-B4%M_(+{x{(WoA?$`a&R*zxRxUm<$eb_h#FjItT1H4Wyb#IO{X26( z)=Mo=s(0fTh`SOBX`Qr}4Z#!woVjdzXXr*OGJ<($eYdAC>U8&3oZYXY`!2$pNVw&p zJ~w95k@@1~Q8(2%cPe0UMsOq6z%+&E^_QM5bjX#V?jx0CD~IjXZd;cl%>M@d=VUKF91UvyYroX~$lwv* zreua!ULCVf$+&$syMNwce2Vr##OdZJ^9TJdBg^^bv+Xj??qr83FVDta$>3V9`Yav+ zpWAlBMIY$^mAq^145Gw@k57o&qv#ZDy90yXu&dkvD(ZBuDCt3D%9qPo=|n={@&91{ z?O2f#B!CWC+}Sr(so!an?#ufed5J}&5tDAtFmu6Ah=jVogKSjhvy^jrAGkj7`IcTl z5_cJs{lse7u8q?qt?H_IrrBE{VTeo&wS3esnV>h?IIi)9L|=siXVRq-ca^tL*4&9y`^aI;>!*5?*fi0KK`MZHV$Il*s2+_B2c;qX!<=UB zRW7XkN2jSyplvJ}`MC%`4K-*V#Ia48Hf*y%$3{l=UR$r-R$thN-^EQ!h387brxa9m$-Ir##*@DWquT6&`gDhhIV<9* zZ)T(>HtU|S2KlbMQg~P>s5UFjuED><4Vo0L7?k&Ey*P^=ihYY6M1{rwvyRz+@a5%q zU~E7#jwdNtQ7T&3&>N*YHnbs^eTpABrI7$h7!F$uKxtm+~5T;qC(i9fY`Htu^Df1+`-^3Pb^ga_;r`b5xe{OPpF+ub5E zX+*}s`5<|Tdd_|jJ<(fsgRx*nL(q0aZ-8X(2s0u(R^h;Q(&_xv&FU9+#A^!Bu{*-L zjj63-M_mb7aImi^o2g!AF>1#%wjA6z`?II|{d%MB`AgIUR{_Eh^Q!XHTHgqVE%psu z;EX7!0$TO?|4FM3)+-6D*UV*LUjNBxXv<+Nse<&jb50eY^2`P%WOdC4!{CS>YX^Ev z?&Qy~B-_dEZaInlTGaFfl?R?2AWh*FDoXt^dG6x z47n+?fj}?KQDIWZeZrx=q&u*DgMQ^dkgUNge?!+6qEmqVcpO`x{2(ZY)-Is~9a3z# zBHnLC8p=2S9epBQXaJPs|GlsFOgm|47ky4;W{dlye%tRqRDS~lZ+#5I0`IY}imH0=71H4P=;gUJ>8WpW+kpFv`@j~>Yf@3m$(hORG?ulcs zgLkZUjCa}ORZlJcSy@fFm8{sxgT&6d-4tZ>p$*f&$GbS0-d>P+gE-_jJpdV33VHV? zgB^L^V~N>7e9{VjnR=zdZXGIR zp?nY2S$oPE7!yS74;`uggN!+m(gBT+gVuww-RU)OeMd$4Pmb=b>8914JE(FMS;z;7 z&eXKp`yj(-wOpzW`yH1?02w}xaBmg!G((!{#z;#VawR;;9I=l0F7Af;?GVs+lScgC zoww**gSxoX|3}MksoSB$+y3t1Kq8NC{fr!eP4jR5Xs~{~8K56NB8Xu8(md(kR(Z2one*W_Of@~i{pt=`(7nO^G@ zQAcp*fVcYmNQ}P)96|TPV-=Sd)Q%?ApTFfu0&%@T=77f3AihoJlXsDPx<&Cg@vs^$6SH4yn^bW#c>W*X@Z;WcGxn}+e~)Dwj`ZW*}SeirOh3waREC1`#lE} zPke02KmB6H{=n{EHC*8j>2n)M_HKgy0gt|k zi0{?b#k@_~c#84oHPQCBzDvtM*sGMF!zqB=tcj1^UZlJbvGiM**pvDP2e?ukpZdsc znCj5AiiaCMI-|gDldJEJ?yEEM5CqM;mTf+gEkZ%!U@WIC{nV@moBrOoHPLA*;<4+A zJwXUu8r+BRxw4y8|DxfifGjm0Uw}yjXYt6B0SLYpQ-Ho4l$mt?eSeqcGFdlVfNPW4 zS)^HAp&jSEBj@}Vh)b_ft^A-+jkuoZCO+!Q&c4(Mz>o(?3_5gulcwrv`FV?;LmlT! zs;+^95Qe__KuUmHxhW7lXz>#IPO6L|KVlS0IMr#+ZemEs`Rz8ARaQG6SzIAcbiYQh zB8#LS*i|E-Q6-Velk8hM~j78%PDnOhNPPUl5ODc#SLDqY*>EV z*Vm@xCdOU9TD~0*Y$4h|aio?!!`scD?6=_i6#S7nq7To4G>Zn%TX}h>XsIocUzZ~O zG21UNJQU2&SFNzho0PsHAnB^Bu;zu4~i5$Lx=(A&eC z86>u@&WYHG9}VAS(|Zw!+eHL9k1yr-n|9DTLlIRtK`e0d4gLTrE*Uw?(qelFn4a+K z_j}ys>tKDjfs1Nt3jWRU8OwY+38+ydIH&2Kc0?}r3FF?gCr#LC3p!roXh32um$6T- zK!nIs=UHs}IP*SUa@B0%~Zlz$GeV zO8QKYzmrN}fO3VaS6u!`qJh_!9s}!jTB_x_h5jwSq@`>w*{rJovRJ+*nG6Hnze@2g zsc-AcjlcwSy814&lS=N*#UZr!4YLs$XFq?JC4~vF^j=*y0l!ao8)$6g6MBl&vb@A$ zYpT)Cu%ft($h5>INO>FI%Hr9YWM%`_u0e#1{*LX+*o^P}%SrmdHU%!pd#}y(N)fK1 zjWy69di~OWG7LKLhIVS(JZJnQ7ygf}fnfRAg#1+eP>v5D1aT?{PhXgWKNseL zt}DONi(iMx)dAV>97*`shrN4q;*eFVkl!Zn-P8O($xP{964jg96XJbF6#T}uVR5ZQ z=&W7D*%H`+ZOUwdjn#ba_P5tBZkrB-kI}`_jJ7K(_l=S4fTsJF~Xl5Zq4FFS;Uq4ZlWA_5$36ui#jZjn9(UR2p+ZgRlmh zVsQ}~2dYx9^d8@A5I0ylBu}|@yA}3HYdnoE|9`am=^JBaiN0p|KfpMOlzKWmt}W6W z@({sa#;kNBo2d(o?in8ApM7^8$;P+9#4+7%(JAfZTZAdM&%udl7S+0{96PAmZ(=Qw!7%xBtoJy4=l5h=t!NTA?blTxu z`8ku;qHMX#D|TFMq3SCC!BhA}SXX0i>g)S%@>R^a$&CC9kZo}5wx)aOJE=oYY9c$u zh83-UHINrd>>Ge^@Pm2-yt$!!lCLWxv5+o?Y%(Hs@oakOYc55EVa(M%k!&QrDvImGWNsquGNXR zYXg9JAD$d!6D*{vtsD+ELydX-=e?_{hx2`S>2nmppG>;%v5MKIj1@_m`|k3%oz=`R#etqQE^J zSyXQJ*6(Ov3ZSdrg?Vo3ZT0q1lsQCG+#H%!Bn96v>vKcl5W}7|Tn9=DPsB%9@`5L_ zTe0(p)@&%lGR;pOz8kR@^iMd78{G2LD!B+5msHZA>FFbIaU6Gw2e9ENlR{mH(=0GJ17=^ka|y?gu-awCFdo+ zO}@S=Z$!<b+9kx9O)*h)oR1Md}5kKS+z;gLin#L|>kh3OpjL8L@lg zZ*Ptu(tC7%%MmD$plY63fzK*Av!^e(cb5Y@VrlhzQ9tJPiK%Z^9X&Cq=dTleLsHD`yM@1(hPD^1io`f+J-vin;H^K}_jRUOR&Tue z)eQd*SU}eL4(7c9hyw9BrMgh!#PY`#CLoeYCs>htcOE-jeU+K3ZOlbqgJdQpKpRD0 zwuc|*)wvSv$!;G1htTl zdshtjOmwAfg{^Wun>3jqEp>=n54KTV=R3^PeSD6#2>|B|u09i>Pa}O?29H}B4 zy`=ERL|YD&%(4CS#Qs#;rH4l%Q+jHUj6&$pnmf{eg`_4n+n7d*YL{$hB+AYcOE3)G z7_#a>Ovun?{5Oe}3lz?YiYp(@OP|&oG4-|T%bqCEi}6EY#R0WM!%$FtHJHHw zvBbI6y?Ms#Ex~&Im?N>rlYj&rneD#oVfDGv9a`2t~oZk4uTKhGEKxhvjr?!C{% z8!`-Gic5IL;&Y`lYH{h|85s|)(jOLVq|E=@_mYjI>>`K(Ngu#bUC1Q9m&rq81cYsB z3~W9F^_bp0zKGX*On~q-W3eQB6%D=|4+=A4Mq#cC{K_uvVPMq|l>eisNOONd$EfUe zFx&FPu9z!fNB;N9XuA=IMgp}Bq-^By0y}175cy6!TNmX-L&fy*m)0Pcj^m3v4EYRq zZThYCjQ?~XYiM!)QeKn*{S!8UsXAnCb10x@$d?cBW10FHwex(TeZ?A$w{b-$vQqjM<@Ybg zH9p2aLPOa9eQ*PK)=H1|X}B&DOP*ZZRkA2B=E~lj48)P84-1@&$+|Zs*Nvt4z^d$Q2qo^uQyHr0&KqsJeG^u}zXr|+J6@&9Yrs0vmR=_e z44D)n7|EU5$ewUbU`NTrenq=EKQL}y_BpeG%d0bmZaK)x^r@c{H#cT3OMtjE`C=D( zdR|*jmb;jGx6T9=^X#!jd$2ePr5BYIX*92ac6Gvpp$R5u;9ch2E=u zTDd}eC@>k>4IgDSfSy(7QPZy!qzFt%aaAA^^KlBeE6Jp){BTR!{z8ONKYNmxV+%C@ zKb3&4Na}xWZii9QiXQ6xGOH}wiON&$(|r1yBi{1OO!eWzA6?G|;BI<=IeeOu$91Q| zyLW5)mo5Ymy7eJ(r$|3SfBNW?*DfG0P>OV=qfXtmB8Jgtp4hyV0LX4MfY0(s_IfNP6wPk*Ln@M&dvP zANlSuhungIzx~`$ynX%!0ggx%MS#3|*RziVRZe@2KEx*Qk;)Ti*H_?C9pPDSLMYVS zpIM}+)r)4#K8t2H{;gvIu4l0%K=;^1a`!`RBL?v7WPUZXW7$LjCXE)|cTPIjYe&=q z#l+8|naW@A9Bf*S9Q1vk!D}R!H1OY(zHwRA=A`+RW`~eAj<36Yu-RF{W7~=aAb2)L zaUjOQ?<@Qji>+=$2+{e^YohdszDFBmwo<8}!{NI;Jasr{?-QqGrmi)K4r#CyTWLcS z$o8kSY^M3_#I2pV+pK**h767{LCkD;Tc<-3T6Hfr$98g+@2|xzF=VsG>;Y}C7f;X4 z5(XHZGd5d8;%;3fPb>OC5oZrD6jrmQKWlCTkjeSKW99b0#l{#bjyyT`J=QudA6iOT zkoeH3A9kBORq#>14Q|2zgPZl^9Z7XywMWh5X2Wz=7Q&y6Y`Z4kj#=^24@$PqC~EK3 zW$L07B34A{I>$E8k~YZ1;g0IKQn#kU#J|=V^&_ioq#icC=c~IS9Mpe)VekGtuUch@ z_I0dAq@T(}gEX4yK)e-wm8N7o*R>goI?a_hkocT(l|bW!V^{OOR1FqCsyER`DTAo_ zppI=vbkjOZ%?>Haz7Pqb?t0pFSp?SZ%#?pyFsOXF7H5JLcXd@-@^)SjQ{^pGkzSR?yQ;_!L^|_;EMQ#dUpR5DQ8ahu~|$Tq(nnHkEGX9 z4!^;+T3WOn>i8PI<6_cXCJ@`24LUX&nYwlcD|Uz@_j6X73$vXrs{1agBYx(RKUik; zpJP_dA8k^RW7Nc)tC)XuAbnx1dic%#3uXAkxdpOhj+d|rk$|yG0O{OtHz8j!a7k?e z2f@~HxKbIhKZkFdnPX|nNd9Q(TI0Tn6@e0mbWmOxdOg|8nYXoijrZVa=Chh}KUPp+ zqitcI13{*Dj5kbBSnV5=YhQGaW4((pXo=$DMiuQvU6O|r9e)@)e(^27Z6WkTxtM$tUCsc%KyccnE@zUz&Q7UFe zWJ+kE{G3IG|EZ;YGUPvzeQLLk_(agDyH*sKbW{>6291qo$ScgMK^9l^v``#4bK3() zp+gyGtirYh0y*=0X{pj}<4T0)#H}Y-Jpfhv&L&9`Z zTP7-#TA*e}aPQ=w>Hph%)il8Mv}8b49+tO_0r{m@YR8zaU>1pfFsWzbkV7SEiV@@q ztbS*4czv>AY;wU61ZVVVXuk9PiH$>*(LZ zpBDi$NZ-7Ir#XQW5YCeZPxr7PEt2ZHu)f(T z$d^_6BOT<3rsa?d232i=C(Ynh!C@>)=BnvqGuS{P(+~)3gnH?nxBLf&jj5ri7F`bs zuuL3IZ1>UJ5kz`g_$|V>SJ$Cti1*$flf~m7jr`W@cC6mCzZ{auYe*v5e_!Ae5xm2c zkPJVVriwm%+R&@~IXL7cdKsMwglD;_c9)#dj0C5WrOY!5%os~_TYDlf2m5@&k@C6_MD^joH&T%&S2 zB19*ua)yfhG+$MQgy?Y6jOGHklp_f2a3L~z^182o_Fi%bG5&J)}Z(c#u$)y)3XCS zfdEuu`uLq+jZ0-;Q%X+c=Nvtq;^z9Y%!^5&uN}4OS)G&*C?8HMe;a$P+FTeE+GlqJ z2NeQ~XJq=lV9nZZV(Ks5pTMYtD)z&3}hl1rvTV1srV zi{HgK6AQ4YDmM*P?P_dCn<=TV(I2YvA@gE0zzIeDKw;wRb1En{Y&GNt?}&5*m~?Hs zg?E{Lo@e%&5mQwWDO|SjM^bW5u(t9cW;E#I6&aM?3%RIYDZP6EjDUx=o=Hk&1XigM zGu>P%n%^Rz67RF7P}_ufSYH&j9!TBp7R~rczGdby^mBhA*lXT@u~5;(YbbpW?{C=Oeo|9R=w9U^DQbB!^Qj)b2)|Uk^025L7;@3C1)} zYasU6C5!W5rM6?0<`t|`11|G%a>~YwL%j)V>*~|ZxvDhVbVOJDXSnO?wT*Wm(~SQC z@xB-{{V`^p7k%Ng{srsFjHO-LvdmA#`}LO+pvk`Vue>KMB*Hg~kZ5Xz!<{OY`i33w zczpaB?yS<+@ShRTk~Dl;MR!v^v0`Jdd-7Rf~r)-cLB%aXqrzjM5{J# z24wvVg~$>c`%^H$iiS}4>{o3lO7Hd#BmgL}GMz>*AQy-?B46$E{5>^(Y`xJv20K%c zL2$-hhuo>akYIGk@fo zDcn_PWJd7#7IqGI?Vfc70-V%U>uhHFa>2k7@Y!+GW@JXH_jQ;=KFc4We#t6 zBD~~~!3qFr_Hj|gpl8+H952UJ9j%Hl;1mK4#bf& z8w_Fxr$F;6nU!8XkERl8z7C#{WGAbSG&v{ zs4O)na>5xZD=SMaGc{9e(#nBM1xF~;&>XN#Q4z@z6#)eW5qO?++uomY?@#^K_nh-P z|D5$>wN|UOihSUC?)$p0>-~Pc6;32uD;0>2qt<7H+QoX7G=4U5!v3aaqw*H9#_~|3 zgf9K^{hr7^0cLQKl7c+KWQ7xQc!NWt>(We{1Jpai8Zo_5J=Wo`nKMfQ(0+CN`*%^l z{s*-LuEOoZU&oN(i7}ufT9v;urn`gemdaibK365yQ>SB6vtI)P==89=Tp&w)%-u|L`uJ!(tz8c^zWWrT&K{mVa` zpY-=c)rp+27yGN&a8m9qy*g;xgq=nt@`~k%L6_G^vcSqmXcc-Zx=>Rt(4TV-krZp ziq!V&-Uk}-bwt-4RGDXq95p0#muHxe&Ng}#jv2_HU>mX%#iV1K+=DAB;LuaWKo6kh zqizVI#JDWFyqapPqW?ke|0CocxTLSG-WReCtrlecvE2zD@VV>6TZ)}m61rIi)?BeY z!#@;F$<`HAVvyAfg=OQslOJ3ari{_tazTr`hqJcmDkIeqIf)EcZ_!jq@-i6gh}654 zs=`%3xk^&uRt6?>xTW3$TBsbLDu`4TE}x=!`|Ex~t$zW;jPkCOO(y3Z3zupcs69;S z;e)eSGt=oT^%_d4o&2&#DygORup=Mhrz+;`!Tnkni+hf{ebw*bD-#B&$T*jnA$NRY z1VPd>E}M$*+Pr0{&PGQ=VpXUsL%g`546i|PFEXS-@{NK4K8pNK;F@Wbvm_wCgz(}n zABUg;g-P3G!%e5Z3LkY4(zo;;MSfd7 z(tbOq^Yu=N25kgcsLve#hhe%5CaT@jV34cwSei)xb!fa$e{?J zb^8!l&lOZ{xQCo|fO)ubY0*NjK92>GWy)GL@~|jxFM8hQg9x$~(NL|!Rsgbfi&F~8 z&r>!-+a@_z?1R{!=9OV+$mR_l&Qf#L^d{~LI??{q{o!T36|$g*KDkUtm@cdL<{?4j zWF8%ToR8{uPMy?11bhm(XbBlaGi099sph-|fo7>1AIh{@Hi&<-%P6 zQkbvXGcosK&{Ql{QnshG`pT|zUPSr6H*O5!v+jQ}`M=)WU=9BdU8>3Hy;okr9X&}X zH+D#?9mJK5KcX8zOh@fW|C8&XP^@;+ivd~rl;^$eRqLftFcm!~40zlYd86!e^LFWE zdRm#x*t^Ut9)CVAwOr%D=Cdffh2b3?wN%+EK~(9qy579m-^B}H&G?!yY4(9G%=zk) zQE&|OJv>pM=9|s%=e%VVuMYWxsP?-_3sFv&X~bkK2w%TEJQ+xq_JJ$->*ZEmE~P|G zQeAsx?M?g9EL&fUb_J>HLV1+Qdmiu=*Ov8XB;iry{cDoI*ArQMg)Cg->jN?Rc5N zY~v40taX{mKu@GSVyf(MPj9cH_Raf66PmAHtv2)KM;YWl{6|Bf@;}t2?yb3)VlWj6 z(RS-x#Rx{NEz1VS0#@OnU!~6Dm$N+$ER5UyQNE7D4Sbd^=+h2bmR!S>kb-}x9+ z>W95EEA#(}YMK=L5j;tMLH}j>>v8!>6V%BVM2Fbc(J!8k4_n?OTdxc%bE7!^8sqi) zxxUfKXtwlZkAn4&07=eg!5y6Mu3lhb_yt%n|E%PB?AvyXI zXL^U3vQ{uxdh(Nt#YzPt0km_hl2{I8DvtH8$CG@zQ-W?ib^nur$-OQ zae;U{G}!}7x+gm_b+|y2^}~ zr;V(^Po1kOIVC{>)sy7zF%0OTyiSr*_2>03B{!E<cv~SjcOYo|kt}Bl zIUJOSf1g*uU^OG%nyl5SD}H>jc?8X*IGC3Q7<$9xm_%tu7nvRGNiXveGo;}%VsQ08 z4Giaw-kA*kIR&)D_3056kbJUEmBtNv1v)T1Lleh-M+)~d&n~jo(n@YUNX`h23w=TX zxHa7GNJd}d%%4GK#DcO_fLzI%jL2*QtbmuInXd{0Xz`xtPoc@WgC4}{pPR+=NH@9% z0l*%wA9vLdCf!Or(S_*Dx^OFkG>$d=|jxsO(7O>G!B=lkg}Fz3KI z+T?I3NG%OcS~=3q1V@UfbW#s+V_s|P z=o?R%%(F4!6;&PPWrW5jT%h>w#iFVy?mNCOeSfujd&QWykWbEx;y zY&V_OQs1eI(9Yp)9RE(1_^3`)rEHXcl_RIH(<-hMY1B)_kfc57)j975W zpI!Jk@?~f(PJA3i;)yg2b!8!6M90>#Xs%$nLiWfiresvN0dpk!nhdO8n;&*x8Efrp zyKE0s6H&K9?@<{lp!%1G`A~;fbtip_DBac3;4wA8X{w}R!IX$5>-aEO8Uz$3bmext z)Q8ox*A<;Gt_3IE+r-fR02Sp^_o$p6lawAY(eNtw3Ht%Xdjo!A`L}f_`}gFpM54fZ zppC$a(n;&?$!q07T`rA>(UgTuYU%M)RBGMnPRl|^gurhd&TWb&+pTH%)bybyTBloY0cdE5mhJPU8#EpNmHgHL*Hbp}t;t>yJ_M7L*oSZ12BZPPMW&3kC0OX!zTl@jQfk@ zqCOGEVm+AY_DWFm?2i$z$99jrC2}c!D#1ox{f5>33?Nz3{4QCtRPKNscL14+c8qb< z>1)(wy*DJY-;a11D;U(w$nk3HlX?O0WMt^Om(qv!C(_=gFTmcNuez7eD+V%_(0eKd z(OGmsTo31Ysl}mo!|?f%cMBu~yUFP9(#rpnM*Dx#X#anmMtc%+4ln(uwZaYV3%9QU zhW7aXiF=key^r&@)0~|!RjmEMHyNr6-Jvr zM$*H|QqUh$Jo~05$@mPLltzYaYkqy5ysWHAsSO0(e7ZWKQfDuls_gqJqu)n9bUY#U zS<+-3Gt&LfBa(6FbIIP8*;7(qdd)u268<5B-O=|+&RT{Q#ZFND zzPW38^%yE;lAVJ6DLbX4TgJ-~OcnV}PH{^!A%3p$L&zukYck6J-cjzvtXF8W>?cG2 zi&o#MdfBK38wXANV+sq@dIB>p%Tt`yqp}Id;{eAkAd=XW{m)B7_QT2dwI%$cD+#bF zlW!~PA)tC>`Z@p4X1t?I7CbRRs74_6U{wTl7%Kf})kcBl>)1(5rK~`P_%5hv_*MIK z!PzmWE=Hl*FSbr3j(H+;SbuZO=OO;%Dk*iZ1hbmuX>ht-74+S453cP$Gps4%LFnk%Ro2{rNxkY)pjhfImjm zYyZ1;Bn`0IA3@v?T6CC6{keN1U`Ej2u?J6#oYsp6CgHUkJQ2opS-@V&jeix9mi(m& zEim)g|Hm`nRRXDsI!kF(jraSMvjON7GU%}5W1LW`)`+Z6B4{O{h6*8{A9f8NIx)sJ zM}3MUL~)}d#qmSFd&z3#ly^}%G}m1klzB-5%Akw5yOwnFzox=D@y|vk{klz$o20rF zv}>}jZB5(en8O?d_X_aUx2d|bPSl`)MuGZ!Xez1{J5Qo1aUL&n!u>rQzMu0%_F|su ze_;%dckKFaB+GRUm<)dn-JCKRE{&s5|1K^!P+y#ZJ3gf2mtL19NWYbqWE+X3LKd(E z`7C;B+sz^y*XVc^-3V7!_bN-NjJ}^i4exk?lqwe1tI@bNoZ&t>C$4*lKU7Ow-^Y%i z|JT46F~lk*=#)6Zu9%bXu4^*O(U`zi+~7aZEn}r!KcXG7uHJG8UXyede;2JFkk0E3 zq>KrF#A?o2HJU+l=d(NL~${-+C3KVnId1vOw!epV3#_uhEr~ynz;CtAFz3s$WwO z5aT>DY5Sdr-irIHK3(~N)+qi~pH6F-za=r@6Sz%(YW*E;ob_L17edra=l&EULL#eL zsM@mt#4lTr@AEW^fcxJ`AiwJ5h{T15hjBIO`2H!Lrt5!62)%PtZx4k@2ZI22wpCSX zz9p~>1|mY0cd4fZ0b3}|$O$iJa%;ZFkXOhdKhWm-GpCn*K@Kdyogu}q+MQ3tf!t2x zYllo@bhn@b{-Yt>%tRVTs;p!9UvUuI(`Rq+4MlzKR1{K^gf-Ux0EhdHGD($SiC2XuiZs97NK zU@%jqy5G-|f7wSm(&5Ipbzq#2^qwd0ej%Acfk{sF%TjRVbXCmh@N9d-F_Ut;ifSf( z!t?^!nUc_S*WgRh)pU<2z|9WJ?2$&1e?`ZJONz^aWyqVJjPSm1DvOH>+EZCDJ*BV^ zKQNjv3iBbIW6P8A>zJx{5E%*5;k=_Dpb|-h+Y|U=Yx5rJW9aPP-O4~;^{?H^;spVU z+7AvXae_+KM5^m=1+WCkf}>R^L={3imc^aqs%9jikl#+~U(5wxbZu(1!_{3A!3;qj0|1b$v zUyB@=_!iMQdHe$d>i`Bsz)%>YxJn)h4)VqhA^zhk?$;{)ePlI|6poWxiCj9y$^1jf zg|`!zv(_3icu({DV#KQ{?Xk$zxc_z+>&x*N?@3r;9rpR;*Ya{j_go-D$(9^xbDI)L;{2|J4=|A8&V@^8{RN9rdrUjLxX=x%WX zE}pgXj+HxC$auHHk~dJ=-;Txn6E*W0)RGgFlW^ZvUXi@pO-zBazFLzvGp*1wyz06O zN!kzC!Fy5Vv)3|i1#%vJvExzhn`!yt!zFf*r#d{i`#X5zt39~@CnVIh4Zu8u|63kq z_>&~q2AH8(z|w?i2%7u-Zr^R`?y8CyWVy@nc)u_!*oCyCg0E#gR%Lc z43ao-yt#M^qK0QdW@-Q+#JYdBRF_CeU@oEuOSj4K_X*i!F{C=gCP|yPBWg?G*IYww zB>f#hesoUp@6TRu?Rf8T6fn7gQPi6HE+E$#8+ZxChF~4&eu6RUz;lgd^r$4CDPyPy zV1xv|G{s$=+OO3M#-@KOGde;^)DIa zyxtg<52Q7M#$5V8M%$BS=v;ZSa;|hjPdl8=Ll{fd$MAoNE2*ZexW5{-*(TG6BJDU5 zYRG{gZJdp-6i{!Fr@v_T{VlCz*eE5IPRr$Rm=@P3^hd1he?j9Itu^ z?Uf;p0eeBw1m&od<}9Uuoz1^A;>Xo~r{V<0t2pL;mtH2PMtSNoIqhhCkFH}-yR)EV zxu9mQg!$s1mjb5r!R|1dRAvo7kMVJb3;9;P(gvJ6RuRccz}-I$K;~+0+yx=7jmM3v z&DJMJ-}1=IA;ld19A0R>%9h_dlAppa_d5`;av{qhlDzu?L0hm;P;wBv3PlfN+JvLP zygkR}KD_2z18v&LNAlzZK#~h4BzP8Q2i(P14mfAFJ0Yl*++xFI(cM%O2NHo~gvLmA z698_tUgd}xA=umyxJVln+QPdg`^d8Z*)UIA^HmAA$zomO9Sk&^X0G%`&689{7bXEH z|3PvLo%5)7qP()QiG5bx7WL{QrpAl*`Q1B0jHJ@;_zKtRwer}T{rF0-CoOvbi3rQ|6-xz4J>Eze<3kC*2;}50 zePl1V1yMy&lC#|!g(-4ceLB;-_A9i}VaMO%g6uVe2CbRWmz;S#mF%y+?*KzivOt(5 zi9uIsukYj7wK)eV;%PQhAwN6Jq{x)r&CubJJh0*eHK`nxt3tsU>9OFP)&iZ!9)?C= zt>HjnP}i;2{mfT-CRrG}W%H!|V6JxUSFU4-mhYszv~WFqxEIJy3*4Yxd%;nVt1L0= zaA^I9k_eC12ozIqGpT096(@8ys%slXN3edM_21)uJ=5rjUL$7 z04Z57=&=Hz=gL7q7tr#~Dh>LV7S;PUSHhXsOI2ALDRb&LrPrI`Ec~~t{9y^)C`^#+ zI(--%DJO9ep@w9f5g6F)#@bFoO@78!f3Nb*YraI#ctgSgQi9dE`7wdDW8b6^U*!!V zT{-^iN)tyFN>e@|m6Hj$QktASseUY&jX2jCaCet?4cDveKT_6#>D|g;c0)6DinZ)b z7}lYoSldx3Aciv&5XQg1`NclZ72Ay2k`~B1BQb^xvj6P)!TST7kWSUK##<81S!fsC za@T)QlL^Kon(h{-I0v`(dV4gZhQ3ZlMLfwg(hgU9Vy!e%-$`ywuLQ6t1%Vt2FBFYm zj_%y%PG?y{C)M&u1JnDR|1E%Rc8n;C*pZw{$%=UFJl-bV0fy%Rw00(2I!i01X zmEmRMoXKa|w~ofm^?`lm`#^N}hQa#u1-LDghlxmDwOHk-F#9f2%}0)D9LxCp53%Ws zFNSJa{|E8_oMa;fkdR3)L z+lrqdwjhRHCq?6=$p?W($}6*b{mRi>y^;6O=KtNHHy5Kr^0&ylp|H5Hl;@&H_Syx` zm#}w1t6kMO#vW~63<(1X(sla7Xxy-RPyFzSO5M==1h2MIPD^og3Wq+iCqS=AER@I|5o)54|z5U;|l7;()ohR226J86&1H%qCf(4@WXQFp&Bu}_%-)LXfXhZ z3wH)TaSe|6Tpulxne-%Z!c>#=iU>LJ{~iw54)v7ke9pU5wob^+^eeoL!E~$-(R&`V zGVjc`q2+)~p!yuPn&-ep$cY{62SqK)fL2-n3U#zP&L|c^k~a6My?gL5`!A?w{y@e& zAjvb{R9xazxKz1P+l2hPL3sxw|8uk6JGVwb(DTV$G@1avSJJ&e^6V~xHLmO=^KBfP zI;TGA;~38T44=0R^n{7TcK`=*w^=X-u|+X~OdKF=@3P8D;n@`@bXsj@}g~9sEVUVe-;O7O+4O?tKT)@d#cMb0g2XoL?mbr|@s* zlc4@12k-k~>(kF=p$TOK+>RoyHE?p&$?<)w7)Z5bd~_`-7SA1pbow%kB|evBlky`U zP?RK+>tW&QioJwQ=#z#TlLZ*q#8N4`c{E2y zW9Sr1EZhI>VE-nfSzMM)$T4wCR{TS%$FKD-8FZdNsxICMpza;6A#i%hGAe*`x`5Rm zeA7e*GFlfm8BMtAzOkKNcjz7^Ve=#;|LAy;)-|R8+g4)Vz*jupK7KGn88=z@1ny&p4FRTcnwGwD-oz z!ew9GWO)8*9^RqhD$gqJGGyXJ`aKX?c>!jV^$mM7tC2Qxj(n`Q0Ihsa9)4L^3f%WH;@ zFOx{;w|U0vUD0|Chh>$Xe?PqE=?7)*L>v8XG*0lS}!+Wh= zXvWeZA!__8YV`9aa{q5EHy7RLHIzr+?)%|WMj@kB$1~%@d)^@=mjdPQ4RIZ{sYI_w znQSD-hjP%;HsxV6WW8QL;ACM-eowPksa!XeV5sfEKYv_1(HYJtdn9@x6?oZz)+vxX z)u&hb8!fTVc-GyWGKq4jIW{lKnP_nb{Sn3KG<}xkwHd{XE7^55e+UotOa$u%K;`9|;PfvR< z-oIp2{Y}>L4;2Sy{;@Kl{MG#ru`9CrQ#$L@4mAf0Z%~aje9!R$T4DN73puNxD}mR! zh%sb@y>VS2Wx;%yj+~&vK@u(+9;DptztXVO?C`&Sea?8!lJ)8N6ghOk&^rXgpgqP6tM@d@O zNHQlDF|NK-rx!`|({i?Tv`+XNZ@L&=Xu}hbS4|MhF)!Z8oI@BtxCD-~kjAg@dR_Xav56Oo2<^6M|D1uMHxJq=l{74Yg6` z=uIhWuyqLZrkH?ZLax-lUEy^rr6N39Um$#WZj62d@t&q0EMk0NH_^Sw!bO!lHsYo0 z>;~_Zyp5{&Z8bQe_F$zk1`E}NeNn8ti%&`=ppLq_BJmr_mQgC?pQNRW_0N=OhnTSJ zT<7%ct+Vt@7|%p(f0Zv^#Mm<1H<=8N#NcGzELj}|vc-Wnk|(p|O?;?J8xrWj7W-}p zESITX`S`Ez3jFc2;jsc5CCK^z9 zJO1NCVV=G2i8CeEn2xetXnoa@j0Qdau2s2?BcW3M3bEl@_QOU=@cN$8JRecO$IKe! zSm}9Vjz0VL6IoL)UR{32_KYElM!^m_ARIhsVrk8$<%<bx8a}ZI+qgb+D+{uFyFB{~M#}!=Kv!!u1;@_X8AN!0e zPI=aT{CEP&NjdmgK#_+G4~r5~-%@|_f`jGF&9HbvE`>#bIB_5>q{zW7-ULtR!Qi7~ zP~;4pD$YPCnW({ev};#5th=W;7vuLn$QnmJ_$Ev$9&$vig0 zJ)zFYx#Sh72l6bSR%@uu3MxLR{6f?pHlStKQ=-riY=N;kJ+PCQd96f}v;rII?&TIY z4Y0%Op>>i6pE$HXlj6S+>!bajM9r$P^t3&N`t;>RI!){Rw9T4-(#TkE=0xb7v zuEWC#e@q~+U#E=shAK;vTx6Pg8ZKPE%e4bm6O;p|@T47l7u_2x`#;QG6(F+D_L!EWgwgtk;0>w<5YnJ3?;XNbAon(%)1= zM-(6xDt79x*s52}aDY8dbXbuw7}>En+_5FwIXhW@(oRn2-aoH0cfnqRBT6mxnaSw9 z#aex4e>7S}qJ1b!$%(Z53Q?BJnD)SX7Lg1=HDk$FNWsH$&Dk#&K^OUzMuo+X_0dYu zmI63=?q%T-i1kzyIcwDN*LMjmIrHfz=xVwMrOBmXw?zalH`>uuyL#XgtkQ^F$Ano` zn-{6<;viQPCzJ`-NG3o80(t?(y1ZkYVAu^m$5sCL2ErA?a#PCCI1V}dE*~Y-TTl@- z>(wA zEB;8!&cxb#+QzW6UkjC6)J?q<57ViVRV*B*f&b6oNxTt6H%ux!5>glmCOHTQK zXMBOgOT?_~5d3X8@fO@}YXGtSv^2_S_l&5#a>sE+BHFzp+D@T!olK1zG90Lwm@sUQ zvDMKzz3nZxR%wYEVexaPwVxL(IqQO=-Ko#pMNay|7B#0H!8K&P!`m1OcHY8hM`ar2 z7a=Xjd*zZxgvEyl@9D-o=i%)R&Lx5}YEbBfVmv}9`Ig4htXY@K3%WInNtGe5uaP(4Egx%`k%>$QuGtbA&p?Gs9JkZ#CR{<CzMj`u49HlU@?3=(uU{#P{fURPDQh`E4u(?VWUJYu?e~BBz}ZoW+cD6M3SN-?|2E zmjto%h_*WW?QbcW1ez8Tkyg?%Glxq4OkDnAhX~pB;mjn9d^TbH$1i+6f4zLG)D@VBgtDjEsq3~uan zonLMh{#>~T6HnPBC<^g(J=M>?ZIPHF_NCb`-<&Qth%iNzhRw-KewL=>7#}(4-bRq4 zoJ-cd+bFiOJt?+;*~iLl&*S1S9^)y}?Bv}J@6h6{y^-7%jNiJ8ETfS;htFleHD90-na_P( z(Fonj+qQOWzl2kT6aUtr^=H$ueBPYM<-0?E8TW#PW^)|2nGR^+NQ!f;6BXQgSl&;C zV-LHd@&k67k|rvRDvEEv{U}1s;i9`r;v3~p5iV)PB9AmgT++%+2SaJV*6w|z-886a z)`xA0o42jRMa^v+L)Fs33UybksAQa@QEV!#p4kN z*|x&)@YwLIbTqw%x3=91_IUn4h>2=TmN9{SE|!}rF@Tu=X!AR zm82(S?es#_T*q>Rz*s?X_F;lmwlfO|>}i#?ouVBPCoOW6(=?#vD0@-UEdJK5&=fkU&b@bIKRmDlx{yUYC? zXjOa#`A0cA&csh*(^>>K-J(1!X;NkN;>OYl64X!+;YnCvex;;jR>O#;b8_vq3ydS| z>?igUcHB~L?*mTUkURI_#bU;S!t6)Fy?9s4u((UbH#v&S@e)U{SSe)NJEE)#S84u& z;Zkn$Cn!k`did#bui-Z;-L`WR=%257c#7)+8QZQ5;KGYAI-JJ`3!UPEZ*a+SgXI0v zjA!^JoI|_2pQBgGdL{4(Sv$R{k6D7fQ>`lLz460ZDF$}H-J`4;qZs#>$kxo^0!w$Q zb@;YUuPE;0Jv^>5@9@E0hB}kh%p1(5bPNZq{>=(8J z@Kz<)BhNm>Y;e?J zDNXQx`UzmkeFzuU|)zPL0$+9Nu48pOPIzdKjeR22&*j18IgLeV=xgLDLU3j3rybZ8z22UB0J*KJl zy^9egYimBEy$D0>IEW}+ft85QxSV)S$c%kA&K!U8rD%Q|Au^Di7h7}c+S?9Hr(+nG zu#UJXR@{cN`eGz-l&+EK*IKJ>X6891jHwLJJ`TlstIY}z-UZ5(UntDb3XG^Ol~os2 zmoj@8NVHwjK1XyTe)xi2MbbD3hSx~;B0w6K>`c8D-P<=sw||X_f3$2TkxIohLJW}A zee#xy?tN2S@r@bgQe4U?rAG3ysAG+srO-`C8etz_S0dYld5^<&kH@Sx#$|BqHl;DG z?Vsuh73wWTV=jZIyP_nuwsQ^ls=Y3?4oKu^b@i&e?=?kIb_;YrI@Xq++Y=)#oAA4y zT&6)UdXI6rotiLo{0MttyJQP7lpWK?pW_(^VO(w4v69frK8`&U`rUH3lo1T*V$`^RF3j;n2%4mP$4TAG#oJ{_*4ay*zYwis0R zYal0Sg6Ybgs}Kb&Cf?m8zA!X{i(c%mrxUT4@QB;Im-eomwdz)h#cc1c%gNJ^SR(_2 zmt*|oD;Rk%9iNjGT{hRf#~FS}PzdL~b9Y(T`NPeu8@Cy^6U!Q@so=-Sp3L9FT(uFU z5Z*nb#>F?$1p>?Ip^_SUaz3)hqn_>;8&JYA>4#tY!38j5Eqv1=)R9#%6Ka*6zXy*E zGdvKgFhb*^+U)w`UQ9x4-qYOy{$GOBjGFw9t6q7gZtCtNqJR~7nk#mBK5nP>(=bh8 z9l!5AoAwB+LQ*Ve?j*8ZY|jgy!vULSl6o;oM#IIudk!QEr}x(xJC$%2~rj8)Ap@QMP+M zbdM{I;^zBi*+GrZ!Ksq5t>WvuOMF+ z8m+m4-9IfQA&}mZQ`JPFU%P#IFn0ND{j{cw{uY$M>Fpd)kTpqy&4dq3YR=4PD;+{2 zcJpUAj4>mQe6oCbz)e>NZOOo49m8tagP0y>qNY8uy36(Lh`g{c5&}S~r`$Foa3(LoO?6K9NbwtL((Mtq99fi+1 ztn%?X2N-kPnDSw-uE0FvWgus69TCbcuc6e^%Yhxb30Sl-}bS~I~%CT81mlxf9#ij!!( z;{%u_?=f?0{Sw1=O4^4Y^L9MJ!3s9S?UbXeVX-Mzw+1N|WR%IgFx-$gtQuB6?0b#$ z;FXLy!;Su8MR{>V#oqEtO&zWF;EEL|s6FY*Lcy*s+aq*E(1@rE zM|YgGM{MNcj89W*}FD|tB(@NUOy||7LkcqLa7k7e`&`u(@T_Q$Sh?czZB2& ziINztBZl_b7F{E<>h2GG!lwKg%b+Macu}N~ZXxW*qZmFfo6j>}ev7h#Azab6dYrdi zx|W1;g|ZAmp~Ts|BJ77RnOI!27G5FA?M7*Ig^v5(WVJyXv5K$O@B(44yYU0L*_m_W zT*-aL9^=OvYSQFhcaZ~^t7OX)QbgvSfp5zcH5b(iGFCAB@`M_V4{`MZLS+wL3+<^O zv?U$Q&$(=i+vz;$IJ5s@bEHKrbG!F~Ln_N}sT6Hk@j!XWE!`zsBim~~D$fe&0!MaN zEr+uU`){&;q3j@ANR#tj?}$jI(y>!MdU844dN*j&~zeLLfvnZ*hGIelS=xyFmAPvwq+^^TwW zi6c(d4Mu{f>S6~Nb*4nhTfxxDHYeBMMLb-h2tR;JpajINS68h!z9ziT&Ws{p_ z+Ezp<*hwlxTiux(i<9h>b`m4w*oRKe(b>Ld&hwJ}is*zEUIb1$amHn9e{i+IyftSp z7Rx{7p`63+`|niuG2s*?!)Jys55`SiX}~Mq7;Xt=zKgq?w22ZfGIPn=*Uk@M-Nw6K zF3cu|wj&N8g_*U>9!TUD5lfIi**S6UC|d=+ZPDWaU3w#gyS>?6gil!JT)nj|b*5hR zH~m)*uj_N&!pbQ*2t6@e6u4wFe+)i@6}dtF7T};3>Lhd*5bhu}pQ4u_=S&X|-3lAt zr4+}HbC1~xx%qU!N3!UqD zBRg-S*5co7=Q=l0-j7ck*3@y*+P+f#7UckJ8@#NfJdg6RCJO2YV^{Bl(}DIn%ZB6P!%*U{Xq|@Z6nk=j>zuPwpj-M_(Y6q zfn<@Ja*iYMV))Gr_QhIaDc0@T2-seg3#jvei;rqyeaBjq#KyCQ^ z;?*2XN7Jmnge6=$g#HBSE{8`dMo=BYvVp_~89Mxkw=92}LG3j9wca^bjCOC49Xy?K z`tVvH!mnnSQj#wfC!Q)uG*xw(W4cXeX^5vdC1%)FkMwr$$+NL4!C#acq3hBuPsI~R zg(~iDI8Y}-bB-K!CiFu1@==Pn(jz)X$J4)d$CBrymQ>Sh`-_B#Q^seH->%}b+x;DG4~piVqta&jZF80*a`|+r1P1+`dxTtLh0`>OqD$&6 znag`PMr8QImX!&lG}4_$IV9VPWsI2HeK_WuqeJ$_n+O6P_3f0)#f7M6h8!G8$gAR~ z%hwSNS?(}BMfM^QqW|{k^yPjd?@@>*Ad&j;-ZGL!{R!(t`HLBDs#f0bFU|QFmGr{b z-mEk+xhOFik;@dkkyw*4H>6FZ%yBJ;I(yZA%)H?9q1%vj>x&N=NWr_>RU0Bi;$ilY z5?c73){U+7(4(5-ZD&e)FL?|9xJ|i^`;BswK%duLBFaQ`5xS_;DOR$}KdBfV$pmv5 zEEYJbvt{SvWu7;<%?;tPaMoRVL5tc3`#D@Xc|(^+p&Fp3gv7U7+UnCLaN9aDD|_4? z;FRMiMLLA03ljV_$=Cu(#>$n&C(E9SC~L21X)C5N1ry$68{3(Y%l{x9Dt?;0^ivY( z`=3aC=OngkU*J1)7xHPaB|FT|8`6`2lZVjsUH_^XCDOZ6!D6wLZJU%bvV}*wbfV&+ zBr1vdNNM1s$OA4>@#Dc^e21NL2bdqul)*)CK2Gd+|BH8(dRn z(|jXq!Cn`mesy;7?926+pW6t)%*Hq}>Dd=@s%w7F^oOoTvlQgZ#zXToZnlTgA(LT( z=4dln1aK<+!)T)d@~Cd|!mDQTo{?+Dom_ zo{3|QICqKfAqQM}5wdlP6Az4uEjjhPPFr94Xsd4y>4WhRT>i$kUZlq$ysRA#Xn>hL zG3wmkKS8UudO%AfWHn5FnaoB=U)F=SE)OIv8*7}^P&waU<;wo?EpY)vs>WR0HWooW zPspjDWnK(m3?$=jaJP%V(L-4C#iRI4(SZXd9+cFiviVM{3>Jot=gm@{Tiryt!rK4l zDyW#sIy@W~v1->|lI_kGe91S(MFwv$>7viXCXIVHS6A`1M_2yjDU1}-%F z&*PHEpD;tsO^1KSy@-Gan()WXb-l=K<6%AxD8)XTa|<2B7SH)aD||0LJQgPcl%nNf z(Xk_$5_SfdlC0lyS0FY$RaPP2crqpBkM%RNleX%ky_mh%io*w0bQ<@{wlJ zV$7`llDRmVAdsN#XZ>SF!Tn@D0_U-irc&t=L8O+%#u8c~b~Wa_WDOaAg1iL> zxbTA<+ivVt-wte>S6;Rxxz9!iNrJ27=m?n>8_!vbv$ui@Qfpb!J^1jul-{{BL;OcF zeof14f7O27AaV9xg+7gH?6#TScar9X><)^j1hO?sxJw_Rl*U1=l54Ee>b3sDo#pe3 zpJ7rLJW{yJax$nKjhfJ^h-pbxaJ&Uh1tr3#wgWhl@t&uVTC68$u<0u)i4Asg-Ng7$ zO5^9gfWj@*^=H#CI2QYGIN+SO;@(hC5|!7fB0nz`y4JgD>ct^%w;>|hHIMWgdEj&; zjqWn{hhbiU&G|&i{26dNR3`h_i>g@-mp+i?C7zO4K@vCUq;;S8#f*M$XlT#Cs;%s% zH^r22Y>SrfUhQ1Rk3)(_kzMShY4jHF>@@6JR?2!~p^7A{DIdA^7ykJR0du4L#tGUg zT-e*?&wgB{gN~TO&^1yTba8pIbjeAMev|$XSy9$|kySU8c84|RH0aU0xZJIk1wHy% zCj@t$k~&)R290*ZEg#=G`*FyFx!$vLW0H#jvbP4uS7-~70XOPO~a)l1O! zhTZpYb-483>TToB4M{@Y4`<1XH%i^xP-_i6?jm)9&R^wE;f66w@=wHkz>y4WKX=_B#4er4%vpK>Ccj2a|<6d3nzlQml>m}92 z!q6EPbh|8bMCkf5*O;YGLh|q6 zNheWrBF2U;6|O2UUm`@-*mS zQ7pA#A;fK}-S|A0NkwWm(M6GS<7|T;Ij&vBOP8C=j5e7u@N$oK!bPWYG%iQZuTO8z zUi?`}*x=YZ9U_^z0+KY@|nJ7-EYtz?&Espa> zNvBU>sW&Ij&EI@_3b$KxZGWxC4>xofo{4LMVO9+idlvfRsayvo#B-*jY)^7@zpQXC zNx4umtFO4Nco~XT5Tba-bnh*%_ zDAnDz!iN6M7fmF~nZFiSr}=2dZ~x`2P(0AtCt)YFq^hTgpT<utn(<#&| zLTNPW(8PitS7QkHB6vXc6E=ZupPXaG+os59;u}ihI7=MsR(64tKdT!X%C&=(Bdpx- zA%Ba52WHKvL%i#W(Lq|J2d;&0#Yr;zaCq<8{_&9;X=keP=C&X4VG<3Hzl5v~v?~8I z{CR-oQ0aC_7GDuV(@qI#0DXhmd$%cJw{Zy((_3!ib|P&*r4b@Tgj~mHzDrz>NrQ;3 zpdGWocr`P{x$HegDa@Eqq*Ok1Og6EWvTAtKj|&nLC`xul_PU$;hNgb*!2i|Wn|?Ks zMSY_vO4?Sz8Brk)E!ZlCK}4AfoKR8Gww0z4%8{T<$|w+0Dz>PoQE3f>5V~;&i8e!I zERb1-paKyBMj#|W2!Vuz%=I3hwVn^}z2^P}_Y+xJDXQw!Is5GW8+OT_IS!Yo&)yH( z7d_a)?05hlP=&{ZtGouj&q%Y$aBU~>{~0H<&t-lwSNM!_;a1k`R(uN#|3?3M)rVSN z`lQ0h->$v=ep2d0mYZ-j68+GS*~IDn;F~f3x6fJL2DS&qk%WFaZ+8xjouAgV^nk%* z0Vn<9&58BrjjbGEqm!`FB-+~EfXm_I;;r2xD=-k!IDUgyDC6vzlT{iPuDgXh#B+ zU1~eE>`VNDZz9kgTHP{85#CV<0xbAOcvph?jm|FIrj@VFhdQ20i;vLzm=+Z^vP#K4 zv?;+CXkT(|H%6R&>nBN{(P|5Ot>$0eV)TpDLw(NU%6Wg+sYfvt9P3$1CWJ~2hfcN7-A(vaIzf7nqDf$(T7O`~A z*?vNTdT7br>)hxyoM20`Dc4gWpzcjipXkkdUpt9d3t1Psda*4Hkk>#W=@>QiXffn2 zrn`&1qP5EBKV???<&4= z>e&nT-43?|U0=esd>2|_HkQc-Y9sWS$?9&czyFcnCDKsdAn(}T9N2(N)v|;uw=1!* zHs-?VOBVWp`6KC?k*!TtXr`giQ1lOD1WD~Fq7%jk<^sx1x>v~jCul_g8dB^m3D-u0 z+uC$FN^#m=LE{}FitEj%PCrzK+bQ4_wRO~YHqj)(#VHwmyIrX(9nUfB)s}#EoyuVJ5n-4W745_VHE%BcZtjk>$8iKfd z(>P4@rd$vP^D;+v6s4)?WNWgW)?vJ<(r7}uG0680$gD!tIx>xVyj(N0g1vTXze)w_ z7l`jyY#RG0%+I=vUuv6Ks9EOERKg4cS}#a_I;wKcgpV-3jE&~76TJpX!yiSiRr_iG z7}N?XU+Qaz;#;>d$2AZdoK-kI{Qsxk(;1@Z=Xx`8Vw$u{{nSWo9PJXd=Y`A9M~Gy5MYb~Sd1SJF zo`vN3VJ%-=zd%dkmEXjjd_Ul=y=0CE>2qkvPCZlqXO%4-N6TACGS_v9;=3Lz!w(KVP_fyIPyYLGHmnr1>T$(7!qO?>r!myltqoHfa@& zNY{XL^Qg^cA$HWoCsiJE_9AsoFq8gFv(4y}Y4i^98_`8H|00cx#A2n5c-0lPV88Z@ z5ic}OA!rh~8?>FZ%GplMWVk)QZnDC%C?}mdj!PAUh4Z}zqKjV&r=f}PSYDGLvh?b_ zfz|r%nzHvL9{7<8`H1mn?I{E43oIOeeIjy6q8}8>f3x3wac%;Wrw&n$-+kqoLrboB-7+gmCVvltt8*yU;H!HOj#%-ymfxQjlucrLrA*luu3Y3?a5JgOd`-l z%nn&Th-3?E>@WdNgz}JOWl$Pg5iuxv+u)WHWeTOriflhEGC8qqpDImJ?zphj1U4cYeKw50R1klF3{)gcT$cUk zXos9(L&U@3)TT4Ptd-xaB7DMyIi4pK*yRBtiRD*Ylv*8DtQ=X zeX?A@SW$3Zn{W8OD@55ci0ra~?BD*g6d_>k$HxM+OU*ITFNh{=T7gGLZ&%xNBX*ittvFmfT3Q)%*ck2ePsHGk= z+hWl0-t^<4uh@AGiMPELKHk(f)xy*lhJA`=BOKD)x74Z=>&4FV+2wtahl+R9gg21v zYSB8Wsm%Y0H0%rG+iz0xFYeIg;J{uk7JB+pUp4u=0AnnEHr0!Z|xUE4TkJy z&Ii}_c7Tyg)}c|w#N^&aXg638XX`~ci7|C>#W|FB*lS{Y82zaDi9_)*C z-EpmW)s;6ADUTw{_JXSiRvU%;O^`b2pX~Exf(m(#{HWiGlGQN05RbPkNxonU+_zULxbei@az_>M|vs@b5{_xsSW|y zeK5BS+B$lANGVbHC)ln}vAy}4)d^OK4@z#A&kZ?lxPx#Jxhpn7=A#~ny{+oZO;s=> zG%=g-wm14~hDCWw(TWMyJBawF#v#RW{-?weP1Oqk?bJ39@GPy(PrP24k;8y{Jxnzg zHP9W&D<+$k*Ky(~$PaH!P3KW9G#DavSL^`x)FGVOW!#t6+nv7;19<+ma6j($p`+bs zn))2Cw2jn`X!M?)%m+8C54MJJKg^HvldKT=OSFad#tN; z@E$&Q*LJVokgT*sJLbXSCxR`*N$hRyt)fQC6*NsI@ECc}&3Qst@)@H5ii_Z=l|Ipx zkwN9Kr(Cg&BKJy0g^F#qBj#T^Enl6!hrP?s>;R&~1u=^*)&GKd4=R&Dj4*wDGOQKd ztr%D>B#3i(l=uh8d4m!v!duxr2)m0}_}@gpjz5+@W;nhnthzT$c|%oQ)mzjN%L_F; zB&cNS7pcXXu{UF*F!wsoWNwFiQ$#Bv%jpDoa;>XGv*=f1$@e5pn{i+AH1o-@_B%-? zBrzPkJlBbWPg5C4+=sIMh zqheqk5?(JgYlP7tz1K#Etycx4R2DXhs8v%vA#eQHGr#mUUmE&kzXtsrqhg)Fa8>#tMOQdeZoY>@{k)!5no(8nXwdf1J7UrwNcP+jy9Budp8S zV`g7j#@;b39i1*!-Q~2*u2(n+29J_|j0@Fc5!!&iBn_cP@{&8!7n)iwAzyv^5qfRb z6$;POvZy}4RgCZb;ABv7y**ZFlX796Inu6Xnx16;;u@uZS2RQJLYCUoLO(#OtbWg* znv*qU*f=JR%UJcza6`21&i6B#4uss3NP=$PN0)JW_xQ%A;-k2JSg?w;VMdsT(I=Bx9snKA3|D0J@U`$izYo-s;CZ5 z2Qe@)GMs}96|wQFE*r-D6wzj!+@6?v_#YoLP%f4B8mtP>j0s!bwkza6mpMw?*saB8 zTp`J{ro<@Tj%-Hyt`vYy#r;w0SXP!M3vB2oOW(RcUAn>CKAP^Ex181VOA%@@&=8YtVVb+Pl?H`{}^JCH=rL<*63c87<^F za4e%D6khw4ze!Ms2HIxqvpOeLg%n^@V6(v&vJ@>Oj^{$x(z|WJKkZXKPD)Mfd-Tpd zi24|act~U7EX#iW@(hhy5|fjV3g(ub8+BU2lW9xpSmFP&Yv_Gb51E>$Igbl9EO}&M zq2ZWKfV=HN{moBUCR<17jr4x|0YT*ErGx|#%X03fXPS=Npg6L<*`EuYhjir9^)h$& zgiNV`>#!_JR0uQYnJGMaL?t=IUn$$0*9SXwV>yl3v2%M>9~XDBmd_gC#UQAVDv(PYpd$Sc+sCH|E-%PVKj zwR`Es+68BLsYU=w)E`Qowm|GHUFChoe`g418ETeN!DnU2j6Y-fGX6^YDXey~Si&-e zfu2RSU)TZCN|qMJO(DGc<(j)XCfr%grEHF&JoveWb%k>Wgv;m&_FW(-Nr&xziDF*^ z76*YFtU`DkCDMBi%>$dBkfq`neZ_17nCrqvlhx8hR$Sg?zvhItCz77Nt`bf$8#~UJ z(H8jk6;8|k1sZSP>2#l~rIvcP6rt@}(5ca+>_x|l4CIkp`5{B8sNGEi>IfUK7yS~4B= zI+r+fr?aD|x3gLI($dB=?IliQcd$- zei9TcT%Lw;JL-t)iUBIF8?B+|{B4J9aExK+YA&us{v6P%PxD!BW5@O*?2>%1z5Z7+ML2T27jogoB{kn}V7m%rEhB_R zcT{?vhl^N`dnm&zFv}vgSE*CM=p_G{@^V?n3ARv}pJUOB+?m)cmbU;d;ib4NcjLTZ4LF z^aM5W5mGw~O@Ff`^snA1Qg46!-;kdt7v6-mmjNKLbILFiI;AHpy4boGHE5_+#}o)7 z$K>m$6&aMpY^htuemd&>S5p`L(<6ViQ`57#>aqpu^|a^D!44DC)7f2OQ}1m&=u(+FsAu?sxobzd#y#p%)_80G z-tp006Z@~mH|&nL_M-*awt{CppB;>rPGSvn6pz_3-s;BiBwXBb#W}7CJKDAL3+OEE_9;5G+^Yto~Va&+0fEJ=jf8p58gmU$F5L z+4m&bF5kYLxuLn&P22*Iv1zJig6DXl4n$rK*CWTYSw68$bF?*53|u*z{gt~`9whJ=2&QGDp$#KKvpauC!VIF zcAv43!9ss}wn`*stWgk0xsX&vHB;c2vc6h1M=K60MX9L zR^bU|$f|hL3AZ9n>#u5erBe(?zChbdEcdQ$cKu_&m=1Q!Yx#CXKm|2_BDkL~YD&z5 zGr6VC{55~o#u&KY$8BYj+l;**Qj;?`07mFEK#TmFuQi|fH6hi+7UGt4v8dEIldY&o z-ch!7_jg7M?cfBWGECa2!%~B#s@DJxWY7~}($U(FGS-*OHoeXf}1t+gw`&RSsMK&PCvP(j2`Vu{^k)f$7gm`0Le zz?w0}iB3bK;wwkZ8Z~_JN^1TA`=-x%h;Z<;kM})FWTigG>*2dEO!5 zKF->}^h-;%Z_5dIt$dDcpc})fjhbNiGoLb@E0~2gan7;b$@W5{)QnFp#PHx2gazV? z25ycICudH~7l%cX?N4W=zWv=o!--N`#fQ}Zi7~~Ip$oO)i;0S4KZN-`x^hd^&yB{;hXFcq)h4o`t+EeQFMir9YZJ*rLj2_IrjuWKAk2U}? zMb>`%r(UVu*dPVV)0`v)W0C!VD_wvS1&cn1ZA8vL1L-8(UCB~GAFx(=oWhf1f@rEH zruJyNPL=M{ROgblH>OPvkxuv8yKr|8rcPI`u)b!i7rsMuH3FVjcC6L~%=Fsw{lW7)^}Nz})v zFjK_liz|F-5YE#+RKgS@XM$cjYo>!)@xvA-bZzWuyptni8xgc2pf8Kv1 zC)NAS?izcE0!Xk^ZytV%Z)fIj6DJ+3<|obiv+zI{T^}(mz+~~9)1@7k&5py(HCOL3 zVVqk`=AH|-?EtU(s6o?IqHd&}a+6N5)^Q(n0ZU)uUZKqfYZx`?$Wf#ME9ZYJCcTE^ zg2APJQol}DKc6ecOM5lI3}vlIFXat_RS+d+5VF0*Z=cDrY@k-wsmW*#}m{!(s$|_0>ZHlWn=yCy&-D8*^hA+n=iE16z5NHg@ z?I&KTPj+gzek+wZqGMbr4Qdh7Qh`qHb&(^;YI)w;MGN+nes@em22-f$Hab`-_W_HV z*$P4Joot%rqpc?26i$hP!X9kgS^n4KT)=cocc;i&ACM1W-oXaL#1C zqTBk2_1p0Q2)^KCJ5~~0`2tf_vTzqWvA7C@7DYaO!dI0}D%Ua2*x%nRG|qjc>X&o7 zMQXAQ_EG)xfS7(*rOLuQs#lU+QyT9YWMZbrj688a-!w~jS zBT81mT>KnUM8}YWo@$$sp$CNC?up)O+3phRXsHbFz%nr{N#2bWm#=|USf|z&fUP}P zI#hz?tNE%b73_Hz1(;q&3j_sOPE2et67Mp2-MZ8EgHD^p>a^ng8djVWiw>gw6}><~6xt_qBLMp2k|fA~wT+?1&kxINPUQA5T7`23c09u0e*f z@dPD?g*M__3$Pmi6LIXLbknP34ecz+#| zqJ`2BvRt`;T7=7<<5Ow$1??sJ{qDr&l&d2*REukK=9H0KRS(E5h}R&$q}lLg9ZSEp zgJKHf)9mWvI)S+y532XanT0U%pUvSkBDtaIo5Ogh5J>Hug5(&=tHTd^3Tjwd{2-i%H9f)Tjv72pOyBxZ>n^sB#(aV( z#U0#X?pYF1k0^#&$!U=ofrBv zE~_H*e(wLU0IYdV&2wh=zIv~Sf3C^H23#>gs-CYp^0_9G4;p6%y}C_XQ;~V4t(mEV zhbECEl3)wuqdMDklBn>2K5DIm(FzX`UoE~*kiD^3lO&Votc$ikr(G-9UBG-*y2PZOgZ%sl zIkPU5&e|po8dw7mqhUvoVZPA3O@_{*qg>By^#R-c{3%o5*kMpjk0wCFxX>ls`}Uc z47rLpY5zfAWfPyPDoW1WJKwYeeQl_&aE%1*YDdLxTeK zgbq+B^i5XE?8`CCTm8>yaMqw(D$f0maL%oyiFBvOA(uA~FmA|;1_D_{ArYHC z+=A=OZjd}LTNH@Vao|%ACauwkz}QAUfT9|0DLlj@h|;|FGWn!$^G5yNO(k`jAft@P z2h@qu#LdjR0jG|0`-FW{rGy2oTZ*+dm-evqL4B9_cMjgMqIGF%A;g^XQI-ha2)Cq< zQh+9LjO6Yrbf1bMw;UsGAI^PxSe0Jp>ZKz!p|wKk&^hhJ?}H0qI-;27E~c8(f;-8K z^WGBLQLqqc%9~o~0eVhb;F1EBJRHhbC+jI|2mS4SFE)vB9Ck>twsLTFGD=y1{CR)W za06vB9>^CBTQ{T`4*&y?Ua4dt3%M`jz~oHhW4;X2h6Z-GmWrs@Bo>*9ZT^g9%c2*`f#IhxL2+b75bD!M+Kj|*MppD9zHXXd zy&&W-y+4VkhV*%WtFn5T@L$8|)lDeR_If($Ks;ktwApCWLDyWZFw?o3X*3k}Mswdl zJ0F@tD~|u?D8T&HJ!E^sNw-WXwn6mcDC^>)Z4R}NP~0^uik5t?^HwpH9oIBqpJ@b` z_&^rtAQzdqu7dskhDJJjX0(Zp$KH#!)3@iGac(bfWc7?*Ekh8K<~>8=do60<0Xf=j z-HmslIbWy=^^|$Ve2Lh-N9L}JX5jAkoNS6t6qhfV$?^m=7(wA*mAPY@%w6F0QQ_TQ&hqL3ht7Gt3qve`U~MZFjp1s(+X;|ZZu|hQzm`klJC%|dpF#2DbQ$A$M9+EB}|@C zwz_r@&kVqT4vM87ya6ASA&y;`kgK8K*mVA8$QB6#RNB4()x+sS_m;ygD+x9^u13>B z{l|y;`buWH+1hT{d}9+2l2YG6i=4S>O>SuF%Ggc-JjPE*YhMVNK8J?*FLB*?-pp*m zEoqe&8W2g*v1)h_f3=6q!Xhsam<76)>uD8Hl6dKq7N7$ZaCa0g1n%iK41W%}e@GsH zP1#Rklm*qieAe06N@uUOD+*wB?SVI!AH? zzb6oFeQ_8oa(-_!o;1Ofp+(QrWJFH+@kja^*lY+Zm(hwb9a*Tni|(jM#Zj#!&~X@=6V0M(TGF;;*BWcK%VK<$P~-!V{JVfo^Ef){Le z`R?XF!cMST5*`t6aE*6lcD1!!?vPM(<~#x-Ki;2f$C&awC!nHI3?agY?-$+O&*a%ia1xZd@J>;4ZX@0Z%hD!g7q-wMaZ5aYqpvVo0 zmlEhz>Qo@zw$i@9dUt4!fkgyx$v>y-m^=uR03wzDbRMG!ovQ}nyqm%(kVAMq@A+Ooc>H_=T4p)8+Mr4R_#+^VM)n>48Jcd6psRtjv^ z;I7urfEdvG(4*FYX!=RXMzmHFl(C7qJp{=-nap@{VG4O@t;0A*L28g+uuH!npG-r- zRh<4(8Lb8R`T*V46N<)nhK7z0RH-MLSj+{kobEs0hw9&hS1VNef{0tWRq432F@#3k zGUPV6Y%4#1+NO)p1}=|Z-6ENKwRm_H%iEZ!E(@;qhE-4MqGl(oE&s!xjQk76M+ZJT z0hORsbfc#@e5Ft3J?J5hjW<#r=*C-shzZ(FKxD=GiSVNjaZhTZa)O<=mZhhzk7?so zm8V_V@~0Nh-HESbVwTU!i9mNFyNvgoWR3eg!UA+T2L_-}wiYn=l2{IHW<^MN-?>ms@RZVtu?BVN3ax_ymdvIx4!<~+`!c>5lb(HRHZDkFBRuVo zNjXsD=Y!rO8zhPNE-biB%TVs>#vZ9?3?rmY6B^opMesRm6a$`br84F+*ZLEB!&#rp z#{l%XvTd5N&E>!z(F6eL7fZ7%T;zbX`1vf~9yk&UG;zR&q>>3DIo%lZJVu%9_2vd! zeXe`mDdOQP_V{mW(-l|X4anAhrV{h65MYb~pqgMzV)s?p9@=8Fd;G=r6m70^hNHpWcA0_DMigW4sczcJ0<(tKPS!=>%1vLrZ+iu?D2{*c-AWmEs0{~EOl z31-3rE-TCwF9L)zWerd_HdDu{#I7M*u%*Es znl;^`qCxT_z~F*pv(fH9`0Fa{b7h*I(&BZ9!CS+u_3&(y7x(=mhZbne*yZ1n6mw#- z_{I&ZSuP{+*-F3$d&-MZvCLpZ&?EvZkc=gl?!Uf-?17U4up7F^T#!3cXI`GsmERH6!S1?B`_2cmE~z2es%qEZwhH4g;ENl<$^; zJLd;L_UK)f1TA6yQ=1m}33+Gfa8 zCLNs2X6raL1rmqf&EI$E&$ZuL6wJ5+)I&SD4|TqWmaoRvkjyWWx8A$E`BI?#>13qM zn^LDgV&^G_PK1HYsXbJmV_Gv-v~cKc#!T@(B+9B(k|d9P7ne*Ic+YWIURwyXAMfHx z_jFcyTd@vBwV!rkz6wp3Ve3%T8j17Qy6>IuN)u%}Wv_-NS0%*XR4p!zsoXRn$fcwi zMAt-7l%z|s6qvF60@;HTx9!_hd&MJdPxFq4z+=MJuHhe!X z8MD4fPF8^)Ktn&)ppn#56KJf~TB5qCK{j{u~ zXj3_#WiRe6BoFtFyRW4%B3_J^8>D(pNtD z4oqA!?5$5x3bU|Rx(0Os7^6KhkM^^UHVxv6fcR(dbpyv130H8w7QWbg`9;0bQY57j zL%1ftj)}sDM;}_jOd|#xf;H-LM#3;t9xIas-_F%Xz}c>E6sNW`RboDqPAKAwT z5_Kl}n#E=uKHOaW0CNdF{H8(wb-w*8b!?r;B0j?z*f$l#)kU~U;G=R^hMUOmS5$mR zdX^Tr4ZZd8iBMPKNYqf$P^bPt6)giPUyWq{l*K8Gc(ikLPG^~2<%0?|CGka5LUv+S zeI;9x$5*Z)`#1?trumtn!_G-KX%^ThWAtA>5aG^9h4R(-83=K77+r7@lm zT9&3*p_G&aZsB2TG?&>y9zD;n>LPDjdKtjc}RNI_m3K#!yP{e|o zJFViFj;s*+3qHs*TJ{U{03j8s`HL%-Es`EN=CWfO)+<~Y(~E=p$?4bE6X@sto_Q#b z;v;k{Ul5>}qet*rKl_fKtRDJqf?*_1M7>iB<9ctM_nq~aVbf-vm48@Q+K$I#3+0P; zIUkDI?Oqc#`^IX-P(jXE92R$PO;P^750$k#1eW#nNGMJDt@gJ`=8@PJu`VgT;6%96 zrX8>2hDvc$MQgXa>?qd3lz=1=JApRQ7wsy4BlFMPDK8g!1Wh%={Va__x;9KDS#79m zez|CE<8S@za%gzYgY#y8Og*>&#EOKpa_U^&2bj>5+iREfz;yAF8L>Cw$XPzha4OCT z0sZcK@?z4T{)^n5TrkWF*L|`154Y@!?<;X0rH-qn1i1^NSCRl%SvVQzj;r}`!VA7d z4$%HxH^Nkn^NnjC_$@kG;RU;dZ1`*K7~}Li;UL^RdzOwUiN_=g&=1|HW5HBn66=T+zR8YTl`Katd#3HR0gHZIHX~AL7irrY?pR+%oR=rUDtIW z+fgBxkez$|a%ybseAgrR!k$;>r%pw1I5<|CuVg-q!kF7SF~t=d#9wx}^isg&5({+v zGc=upoY0Q%(YpOVJNy5?o5%nE-~4}!fafa=e`pliu}7)*0=zb2ZN#oWBF>zQIO}ja z>@4`BXJch!Wocz=X=C%dwXMTuI|pl<4OUhTR#qR6UEK129S|IP=A3_w?gO%BH{JpV ztowe3bEi)`oDRJZ6LyXm5TUo@e?P5syKo`s?8?0%r#Ed}X=7!*?GFz-7C6TEe~&qH oHvDwhxeF2JLPPX+o(sPabTY{lwM(10r*2*8l(j diff --git a/docs/twitter-03-create-app.png b/docs/twitter-03-create-app.png deleted file mode 100644 index 06e78f26471ab5cac59f4c5cb4551c7f32db61dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347551 zcmeFZbx>R1*FG9tiWYY$#i2-n7I$}dQi_*SC{_v~fnue&ySoN=DXzsGiU(SxSPKL~ za{0XXzH{IC&HL?V=Kg&r$(hVKnUlTNUeB}kv-V0NbhT9o@oDh^005zys-ivsfRhIR zV0qwTKb(PzZ}9;D1ai&_3cAj=wg7-?M6wBvslg~^j)lIOQxL8yURQ*Ekp^DA5=k8Q zGOikP{y-dw;_+BLevOr)tksMWDb)vWEW7G57hBTf8d(14FZItT-Hen#0C5q?a$%|kEM^^j=EzuF8!a_0+xT`g^v{6=oPl3=$BU0!Tb%&* zH^>hk0|?C(+KvnMZVwO;3aKF7NgO~#@Jj{eg9AClBY-a+kede(_ygn5V#A{%bxFe4 z7&MwBugf1hmcNg9>{#}`c#K^z2jkotFe1#TlY$lK^L)MmA8r<>a)&)o^Ek*9J&=fI zN4EPjN8roHJAxlSHY8E6qJ>BC`_?0e(gpiQckQEJdGm3zgnxm}T5e>a8W>O(7akP- zg2!8V5q9zCV;MG^@Af9X=)a~N2uO%ZGyVLB1HL_ z8AwHoRmU~3ov@zf6fMnaKtCBuT|?5SYWY=b{^l9kSpQ?;ERlM%^Sb_*217P3AUaO}O+Rt37=>!L76{@l{BP23%a{E%$n3DzW? z2*w&EW&%Qkr5JBqHnj}Dx@XREs+~jEp~5e;ZDS2W+ep>BC6_*3g>pzn1&cnBqm}%W*IbWe+(bK%59KqhX>MoJK(U2k|@|DG|4|z9sm}L?}kC_T-T-N!Nbta(~ zql^^AD$cZ@@hIHmSFX6|yrPTn7aQx8$yzqSC~Ebnr(t9a@5v-du7?Y^MW~5Btm9lW zOkOoeZL{Pjy63tlPb;;G8FVUM8AkK?D<{y*G4COq&QpoXxN{Q$&3H#M3?_flSJwN)MFjMJBjM~HQ_JapYac$}<`DHe z`MJ=gH)xV7oARsw{8GxY&@sRVTOugCpU74#FqEM`qfYer^W)g60-OpXVR}C6WF4Zt z2V)p@$P8B0+FZI^phq}=EQ4xQ;b6=xvsp2r_bFw8gJEu9mPnrMScZO&58jtpvTz2y zo)T*zqfMNUkI05+sF#3ld)@RuX2T8GThj^vYN*Un74Yk@tq4Fx{084F-#na$A5#`f z{47EUd;cr#%ddXxK~!frz03rfn03sgMW1MD$Dg$3*uN4@!=Vh;*CjFzCd|Wsi?!DK z?u>PrIOD60J30dUSs;-+#rmhpQXEOF`z;Y_MUs$^X;SRhQKrnzpP%o<+%N~JQa_F! zU@cb_PY6{d!4e`i`;x@!63=Z%ryq`pqLf2fzCFX6OTQ6K>|dSk;OLY zX#^I5$u<wW zBkn#AM`RDY+W|x<3bBhNqN~U0_k&~c>A3o%I4da zz)e(f6hqWp6eC7KP#4+~^IG2emP)WsFjyg=|2%9oOet(3OogB$je0I-)P7&cMDY4K zRB$s^h;ERPjlKzF*k7hmxIrB)iZA+@Hksz+dHb8+8)^3R4q3LHL#?AXF?jEG?1WbA znnx)U=hy=Z36<|+_hX;YbwPeJm6VkyI(PoGoI5FTEx~ZucOZ4pZ_sk!_;x#yzTdmQ zvVZg~Hsjh{fES%_fbxhh#!S+Nrhd7~(wOatymE7PUT9X|rtMq(caQ0@4err55ew3l z5{rf|Oh=kWe-^73??ov^6W{Ky%&#GAH0u7;QLMacl(M}Wn%sCc_{*Y$y<_-F`O5O{ z^_}0{8j)8xb2upc0ZTE8Don%l!{1^Uw967p6GzHde-=DHJcjZ5Y#gtPg$WFOh_cf> zNjrKbOx3KBuhBK$RX0&LW1AY~N_+P<>sxE%dzYbXn(NVpIgusr@FTt#0WA^lG}g`6 zty?A9F27fPhx$%S^+{3s3HwVjol0821drd)c-J;v+n7*z(m5|}@LGQT-L*N}Z2REnZ5XoNfC-=S>yzgknXq|zs zXjVa0Uw?l+#pw9N8|*9BBzGNL9gNj05zJJ_u(ER8b?nGe!%`m?%;NSEoCVL?%{O&Y zbTV`DPXn9kn;I>DcdtCFI=ekX;!b^TBOPYNi`R>Hc>?wP)(U#Z&;lvA9)OeSD9sc+ zE~qH@r6Qp;USPqVpUAFl{^F-klxx(}5-!RC58I`|jfjTW@z^_Wq4yr^dxxXMyWe*X z26NS3J)O{8PCOGAeEQyKr}}C5Qzdxf@kh*47kKa=8-2bVpnsoy^U=rd zYVr7mSe;mhN0^6!$2Bbea`uu)?KhiPfYmfBRwfm-2>jEt8CDe5?)s>K^`;1*?X;l7k`RZ zi|c2PHg6#v-Zb5somByC!xviPGRb&jlc^mkCP@&}Uf_GAM9V3651n~>TYW(CQUzaS zL?v4#v>MO6!M}QAb*Jh35qq_Z<&-(F8MzRaPB&>31zm2BZ`Z4%G_tiKcB4NbqJB@F0L%sFNMent3A&F(>m10e8m(v3Z)qF@k90AD?TjN#(pJ8iq{AMdhP{EqgL5>2$Vq!+;Ahrd@g`ydh@ z!vgk~R{|Ttr{LKVUK074qpKP;%NW?m3vmZp5(&??AID9iU8C< zkG!tZ#D_C@?y6><001T1KQA;j{ikOD0Fi;8p{bX?%?D<84>t$rxAx3lAKmSl|4Xo# zhE}ILCOmB;3`HGqd12B{Z@p|JZAW4KX3XG31K-X~Ul3>zF0i_B+p)^`;+kmV%!h7*)8xGLdil(wE|x9~9)Up@Ztmd-P`n!lnmzQM=?%U_1!E zI0z;_>XbH$+eAFed~|fwDt6f_<){vLr8< z^@!!?t!KWjKK@Va40knJ+i@;_jPJ2z1C5ic2TYeT5_$P%8=#+ydR0EcFsGviparQ! z#yo!n?f&qD>2{9$p!M;eq!F2fZncmF{eX0oJ;UArFb8jmP22HN@e+26;y8`Dx-Y}Y z#z&mUBa^FEj?d2-($(A;LOV8z{|;H9l{g{U%yQ4J(XDNbDPZ}JJk}(>Aql%kI)G( z{^=>}cjAx`z{D^3epE_1_h1;9yE%Pf_^Y*MYG8AiAs2)1a7u31Q!w$uVCR+Dnd{7M zR^0pe38Hkx&n~vk_TL=9N=H$2OCR2U0OlEGAZ?JR43lUf2^w>rq0U+e(&XZD=fvN^ z*<1ESyC3dHI`c+i&bNU-eJ1|6p182EoLKIZ7`$Xrhq780JYum?5qT8!dZ})@bRd91 z>aokgD|qwt2|DBm$Taj4`8zjtt)~;|A{VVJ7i{2LP+t<}hgh;Qae6oSJ5o5dKPQ0! zBK|$xqn|(MF0v3iIKF4D*DZ0PgD+t1p2qy(ayMWhHWUD=6>oou|7|YmPLAhbdAY?# z?0)e@Y%Wf2LKlt$oXvgnllZmDlY6F#W0~07V5NA&&&wLIKdyXpO`|Rr!tKo6Hny4) z&dI-+@~MnjF~m`2%i4Jo9O1IYebft$<-mY*S#L;7A7(TQ$sh!P}zctf{V|~BZ-ukSD zy7x3pM>%7mOFq**LUXN*k^w9383{-ihn9Fniu`t@JxH8y9_xEK$&{>Z{G^>IK^be_ zmsg_Z*`Yoj`wTPQyI-gy0fTSi3;SA~F*!OV5?pP(8kJ-{q3aF4Z`ZGVEN7$&S^H-t4$-np)S_?2#G6F}i;=(h4CUXC{1R-!T`iB_LyldcUYL5%(4xIoisqhqL! zHlfK*xRI3N_cl7=BN4-yeRtQ)YT(}Wmv;rJqhBM2r%1nNfmE0teK7Ui?DI>yd6!Js z=hG+HPdPJV9@%QxB8D0oe=%Kqei&Wj^Wy2oJE#q9Uv>ioKkcIP26#C*2`PLGm&&Y92Peb44^0D$W4IaV~x zi0P1MGT-?aYmZBPiDM8tQKS?a4wGbK?qfEloGdhRuiV?;Sz`s?tVMjs^l~rH+TP{* z%j(|xTw*zK?nosE^Hb2yqztzZ0e#LX=vk(vMB<=L@YQB$;;E)2OE|0ZFKe-KAIlHg ztYO`u`*a!3SPUXojGJeKp-);*>+U86B_8=a{n_wQf!XqF>_C&3%=8p>Kk;t~v}!J1 z;Ygb_Kg|=4NWNUDl~sPPdP78C{-S3Pb$*Y147hIUj7%6)c#RP(;utPt>z=#7OO?R1bD@WAl-! zQ{br3@(e`;MWlSrRVHEAFHtm|B&FiQf7&ap{K2Vp$U10(8pfNxiYHx0$v>g!Md$ld zo>7RRAUsFcNlX{lf`a_H_A{O#WRWO$rG1_pccC9n(wwE?!POz2&vLsg8`g;`7ek9D z&M3QD@-xhO!>#yNK~x2ECFqI0&y;BCSa2f(M&OfSp%VIJkWYH{uSD><=}j{<2dOF1XBwku#=lq z(Yvbki24lu?Yv+oG~?&#A}_S!HbR7A3~||JeJfgD@jYLdN&F;~LDAU|Wuk9u?$Vg8 zui|3m94W#|NJ2*z!M-!8KS!S-%U&@RZ=8!a!V!F@h(6*NopZ)(%t{y7BkBB=^AnaZ ztrtB_PRN`0?0jMg7L&9q)(E~qe|G0wX5iJ;M+bQUvc2@ioXDO2D3;piEASET=qlc# z)%tgrNnL(XXBVu5k>9?S4 z?%nJvL09?uRnb#{gxXG#bbyJGdr9LiD7lO|dWR~>_JEtlZmJ^%9gkZo0jNs;F?sA2 zVYO4JD6g)DM{jK$J=d21PfR{jT%Bs+aqc9Z0bN04d*D~4JTxK!YA*lY`eQ7EN@Xr? zv5H$kG*X<|P>jk)X}a8c>c}h#6KFlI4}0;VjY`S)z}K7^$C~Y2c*ToVfxQ*@PL+px z-cWVRMNxCM1rsmRJ4SCilHhJUFRlHFuA?!BOrsA^T@Pm)mN7oigNp_vkS58$(VSke zrCQW-nxgN0E$5a~$tr3TA(ZMTx#T8L*DEQ&X<7<5mq^$)s+Cxfa{pA}x-xpnDoWT9ZqW!bTggm_q9> zXQV6J?|4?f5O?S#5^5YS3`k+YPp7Gl|2@iCP3925MHA47MwW$6#gfYJG5q8t6ZIs% z3r{+)4sUfqT)5~?t?#iA67Z9?-7S*rajE*#yJZ8{v*&xyR?$SWYJ7@V8vp$8)}M?s zP9Dwka+9i?-HC*!pDJ{a=1Au^>*~Ft*Ics$3;o=PQ!gvB*bM|wq+w9!ikihH0pbSK z_y8w3?^F^dM=QDp7>b(oj=L)0Dp`eBf_dY|#W)1TL`j0Oku&~`Rl+Yvm~9Eqq6Xq0 zHe%lM*|N$kOn5P@QsOuUg$+rSr^Mi`>s%1}8SVi-+kF$BF;;)Bqnq_-y1y#DvGwd5 z0n5;@G?(V@Gg5m?#Tal}#3Rb8baH9-B*%9@dfyp}7HPb3#bt#}25vr`T|UO8p;~TI zW!1Q1#)mPte6#O~45E63!^|d+aT{p6eMjbxUg3(C5vZZEDSPzky2kl5pd7#MXmuy1 z2}e;}Pq(U33e#S{Y`K%}^;6}P-(C9vR=l;Y@{Z$FS=5y{i!@aDcq#o-s~@{#Qsw#2KVv($(TO`H z5QN>$?ae{<==lO1e4l%po6Fb(21b_Joop;~PhA>~v|9K5Xos}6-F^R_%NUW6MaEJl zi1fI>ku73=b$%}rQ~J9d5~|vf@uY6PIB9ljNyeY{Xcr?_658;+Cw#&ne0fl&CjrcO zB8si}=fF|Dz_s;?Zz(r-SH@G)(KXiO-1R}70@M`c41HIRvp;588l@w1J>85>)!G{p z;<6d+@X&4ag?!}+d?}}~28TMTk->7b}UJsFrZ|p_&t-B=M;CZ633qV(y#q}G% zM>ujp7o-3C0WoxObRsj~hsrC%v%S(YlzPgc;xE*~@lmYY<(xf#u;`sN(@S;(SFOgY z&75E|{O;xrr@!3~biqN_lZHZnALUcaS>aHCre*X*Ol_1xvO7&UV8DdH*+u_Rb;Mkj zLB|F>6);hb}*nZ_~BFBQrjIw3{mCtQMfA2}^;FwR>~ zed%|^{N-8yvzh5$p$#dVm)kV}Wki~zDR@-Kt`l-Gx`=6%p|F!~&>^1q#e$7-D ze=RlITSGE+LhMq@;i?a<-h}lGeI=^)@$_LZN^64(MWd>;?4PNmWO>u9sa$!dZ}7L2%jr7uX*bk@eJ$ z8|!ZU>J7Qr2<-GPQT|^plGy-#DX2)YTwyWs_2pbYGD8v`{TUMvrx}sm-aq^DZ^Pig z%guPT!#GW*awVI@g*P!q)Sy1FL2aGyuJGZbwCnq0dgRqtw!eo-E@Jd+sa8IZF^1h&;- zj05Lf*9rRDP;*-mamewIo#)&c*uTL%Q?$OTf0ivi z-8HGre*;~+1k*;XF9Lect8c@7vmZnCK0{lBysLBm_zQL)Y^}kFtLo$b8!7*rkI6D+ zC{g+5D1{SNq)rz+k46i_4(ASg05PcHHLWVo$QU+shY`F zQEncvwajmY^5DR}dAw)cU3i^tg5$8v1DLl4SiN&Y!&hON2+TYw#`rIhr?X>n2)QBJ z^?!0Fv&wDZWaZh0G-17e@devU!S0~Jgmc2#trT~fb3(}tN!M{A$m>FyBy*W7OO8zl-pE1xg4g=b@b?} zh3-&iDjAaCPRs6f2=nuyi~qdZ_=iSL`9by{rPL72+qbkQGST6v6t4i`JZIUZdG{0s z!)@oWYcYo=p+HV-kW>wvC8P4MwYB6}0wBv8PSIV>J z@-NX!_wZrMrGCh)5`v$qXAx=9hRl^r;eK7C|8BI_zfE1iB3nz$+7UV%2PNjiuF{59 z8BtwW7T;WrkuQ~81li_celE4Ionych*>fb>e3VBG)RC3Gy8N4!NaTn~6$%}!TZ|Gm z2J_vw)ZId&zW975orcj|)?c<8%PupldKs?#+`}hW+w!?TF%Q+llhNGj5dHKbvu-?@ z!9i~R;{uQAR(9NF_~a{PeD0@jyK>+T^cj5^Ei zEP*fQO(N7=zR@Ne-Q0a9gj?emNAEdh{<@q)`krZF)(e^hgbQ}?Cv9HsZ3$%1ZKK{F z+3Ni?1m#gw@<^z!D1h8vB{EqT3P3@heJfm;d*q9$ff6@4_U7Z3R~{5$S*8=rYGxq+ zycPWMtvgOjv7J?~Zfiu*Meu*;i~o>KN>N3;#G@*b60X(oEAaFm&K`MD^-e?h5ezjG zf=%dTnr&U<6ezO%R$-x&T~>0;q-G?JVY5NJM0;zkQZY)6;py4)o!h+)!2Wd}E-?0Y`8S`owdlX2gHPhW7P zI^!mYms>Jyo8#F+>!)M1%M}ljK%U?>^rsO}hU}FpOnp52IJ){$-sheA;2#18JliJb z;I<{X@(X|OEskU+LhipJy$5nBH4f3=NlUW#i(No*8G$o_JgCyuTOAfgSILxH=n(4i z%b5l|_AZ*VtA~0zr=OmvTFyDVcif2HBiCL+80f=0B{;1>z8{f_F)~P89h2#ER$TW^ zH2j*L;iKe@8q6dHkDPN|c4H&8-58-h_P0gwUZRZI4eW+rF8XE`GHc7*^J3^?=?hf- z22zVquqsBi0;y;2+R^yvjLjSxeX0m%h~~^|4t0%jK7{U$ClS;%uGFl<^F{E!+N_4f zP_SQ#j8QyEzA!L`S8ivbr7|kOVa(Mjx%I1?+V(`liZF>WsQTGG{=Y;z@FE!hKDO>3 z$PZJ)eFof{kU9d`-4*euy$h85`>L8clq!Z_Lgw@;?QakJPhD!Q&0w9?9~;&YEU`0q zpp}(?b6Sa|04^{yw!8@FB~mFA#*4@F9JHG)olI*G8lKITH0w|pF>i2-CAbNh=?I4e{jp?&g%9$#Ad+um@3Q8l zEuZ<@hy6?%`khS3_@ujD$%i|-uMDU|&<+TVALk5)YMj}dzs)?gIN%w&uHfy_-U_EU z6AZg0uH35>I_j|o#r-vKOh$-@f}n47k$LK1Q=9uE?r|tRG8HIyS2*#6(~^)(JlJ%Sh> zqR4kS;QTfiV{T&!<(~H%r!}irON3`k*IeZRwURaKN8H_3S_j&%7ydZs-e=zxb zDoACjJ~0`af}wpEg?(4VL#9Z-yV$!ZL_jUC&t4S|`ieHO>w(7$)a_zmLiU4y7(1VU zl15VxF0tm4yVoWIP9MY#RI}TWaOcgK8}zB3(OG0NlQEoP$Dbh&bJOzyQ8%#Wo|=OD zzeNvXv==%Asl884^4>5{-5i7#A-aS0j&5=A3sW?bfhN7z6;6;fgX(0|53z}Nw9{mY z>cUCKn)v4nB=vGu2ethNur1;$ZD*C(HBegyi~YIPFx}<+2Dy~x)*4+t$GL*t9J^t^ ziPFv0`6{huLM|=F<~)!&XDKGgv8OD1ftBXkjwccLjQ znY+aUZT7ZYhh34~kYLR72cIVQs$hX!2{p}tqMJsjvBM7wXX9Luu?&HSTw(>f{D2?I z04wfTwmMy5iuo00WFkxcyo6(bAPw~hjO zLvoI>8|%d*?^_KMxcDT}>e(|%Lh}*%Y4n;L+W7)e))sG{p4~q|078G#?(OaGR0_dq zLwU>-ZpJc%znll{Er=yALIQo?xMmUyn)$10O9)be_3u*uo?8AHU=uRDCXRnj2ZwWA zy~z}wIBU&u9zb5g$q$oRs6ZCGnLaqQ26eDwawOBIR|@_#tcKx7zh}mSqv?pZJ*fm` z=vl*9Z|Y<9s_R|ZqdA5GW}-uT4a z8HU14C@b~B1D5xln2xNj>^t zC%8;PZbclh3c;mv-;OAKGX|~rovR!A5Sf&uWsi|`gg>x>kk5Sr-gkojB&&q)jQvN- zUWw@jjBgQ=Y-TQR0J^A|V(^B~V2Ai^+ie5~CW|g7zcEBN6+p1i?^m;NiOCA-b5T0H z1xdC*3Iw^0<#OqxYL|=0fZBI!)@E%dr)Jomf+#&R<)#yvFd~$vzPi@VQL_Q&GRq}x zXnfn4xqU$#{o%9Af$&B3(CHn2r5m5+PLDH;%HVv0ZeRgI^+7}UEX4gJZyB<$q` zrPa^2O$k}x+(A%M9iCqjH&@EP2FIXP$wI|r&}xr6W0@p`{-0BdZ5|i4=&suV>*`%@ z2-^uz4c`CwDQ-Kwo>?Xu`5Q1&@jN+9Hl$MPw3nDnXqd5|cTgBPL$$DqhJA=j=6MyQ%nxjRg{8M^W2+nO8irsLw z8){Z2cNJ!;%N|LUyAH{5{d;H{N{lNhLvblXSk+Ep3?fxor_fpm3aCU=sJwJgJeW2P z_kv}-m@4K2W1oN9v*++WzsKwj=z7-uF+1|q;?I`Y6Yxrx^oNYLzj4CID ztGi3CbB~G#(gZS1j0YC|RfQvwqb6(!rc_k^*xp0teum=U-0o>3n0bwieAY|+<;KlM z9DvQ$yx*H{3@iZ?1KM9`0?_@}FGF1CIqrd(^E8 z9ty|4u_sj*1xDW_%4yW{hE5<4#17s2TpH4kE#l^`*zj#T;1=SHGIYq{(0QG;Wz5js&BytFPeUEyB2(SHg5xW2>3yXb% zOyn7_=H8J>oJ=Pebcq7dGg^?iB>ep^H@1kCt)O_?$4vz3;q$p{rH%_^UiE+3zLYFB=>W-uJ>EvMkz7|>`eAaK&oxW zimjt3FebG!RGvI|>umb?qEcuLXkv;YIoVI1LBeix$&3?O&{t!g885yeAP(Jz~ zgfX{EqxcIBZ*!vpBifOcg8GfJ;im0JF!oCezs-*G8c;i`iH7k;K~qQbEkVeC@W>!^QoG=hNS5t-3dTu$Xdnw@CTq)Ohe{Hu4Fih^vTviVFJPSunuG8r!+&&eIb|Q zUH~CfXC#!j`Ixtc$Oc+~OAi7fPH5*>553$8+?iw_8rJ~T0CNw>T^pJ$bRf>#^&ss- z_3YW;*4cK9sWx{{7K!B1M=GY6g(spioQX{AXBx>p8=$}Ljh;4ugac2F^uSi^GQ7RS z+`K&zzZkFtlJ00m(wi0V7;{g0*pvjRE>V&X741D#o1`-T_UiGEQ+;Hiq)PSu6rS^i zws0GEo`<0*eYTufOtAf9oJDm^iTlO_YRNGncPj+Rc|fw%@cU=o*(yNVBGJtpfj#SQ zT7dRv?LP_>CZ(>mN*O_Cv$n)9U;SdSn(NqqQ95^G&J`jD*t{kQ3nWsw;UYH2P-nS) zK_HT(KTWF&XB4tYOg)Unu`t-zZzdJ20_vgdyOUO$DPdY*~Hk_@b0_+Mq& z%drO@_>b5LO`9M1JG^V;30+sTVW(%9Atx91dM7k9L*W?v&8l{GW#~(eu`c&r=43Vo z{tWzEmD0ahjT|&-LkSB@P6eO(FL%4%0U7;%OCfEssXW5cbjYd>7mXd-WzyDpMU6M&!ME% zAxe8)C5&57wyZZL&SDj`ojK{SlzY0>FI2_GL~)k9uwox`OCA_Arz3NJR#|hqey1%B zFN#!Aem)WvBhMN_)WBodh~7Ax(@7D2+&pP1$#lJo_5_0(B_^yaPTQQJ2Dj;O)Vc@~>8RI%{|GYuz?K z&NhosoZlQ=;gGB5CZF3AeGq?;8xY8bbQDB}#L1u$I@#{srl3_aaFx35E^Wlp5Gkx# z+q`;Fzc()6Cn3Jta5x<^Z@dV{s3c47U*gn6@fFqv08V~-`AxR;+@Hi|fi5l{tW=Jp z8QlZc7z$gJnJOKc%DW}%_i8fD*cDJDjp-2Ki?_U1s`(V*k5oTkC;eO5;2+aJoS{Vv z;Kt#}^O_2vmIouLO5e4?QaJhq=)Dw0J05aP7>d#yT;SGaY=O+p-I7@)orm2*Z17NZ z`X~c2bbrD4iGv6yS%1#;8%yIXHziab={JIKJlF7f|CmYG7?qof{`dm1k6q*A16(Cs z=_<7CXOtSos*R+-aT1h4?LqbvAN^_WeKcTT z?Z3ELzx%P^++fjDbaMkBX@m{T7r<(Xgz|OQi2*iv?Imz{x@n?F{^l;Ho{%!$mdFR+&0_2k8E8Q zt5%+YBvSDh%)yRnujn;Ue9?%F(J_4UKlJ<1+^;6~H?b8D;%cXmpqpoBMcY6dqg|D4 zG`izN^+%FzauDv1*qGE3Xq2YtROS+<(oMZ5U0CG9R;3G$Oz6%24_OEAy_3$1{W`ChQ;8a#m<`!8n{xwzc?z$YM`M_B8eYK! zw)hL4J<7B_<2*&RtA^P0URTjiCMz5b!O|Z(yH+|!C!n5ccgbTXXaMHUrl_J7e-aXn68+M5pR#?1+B!qYhoe$GsC)DKkCTywZb}Yo zNZYM5CcQpX<2W(SgSv22mX(;WXdA8<2EvZ4wttvYk2B)WIdojTBjO`7^>NDN2l7u9 zD~4;B4b|`68RPun?YCbYEsmpdEjsX%B++tgP*Glb1|2-^;WS)(RIXj6eEK z&uA}*nz<4|`(P(T4@%nVw`tYr_PEL2WxPK=#M)(>nqeWw?_Y#rZ(M!Bg8d*EtKksn{}}Bh%vYnHQ!=P~!C1&X2FzjB`hdN!fLJ=(iqVRB5b86!MALwJm|IDMe^UPOl`}gT*w4tB3no3 zR4~jfVn9ymT~|XZB{upy^d4A26LarWbX<-$qkOF+!$Mw_R_!W#_LNpHkXYk&*N^4% zc3ZBz63-65VVt*#fnv&7fU~7Sjm1CsJkM&n;g3pIglShcO+s~NR+4$mkB-^Tb`Bd= zqes1L_)zV2N2XX)eL_xsIB^A#;MLOBdnz8A>+{#nEzM#2M9`f-F3Nu%Dk?tXR-=+_*oGf&+SNYLe0WTJFgP+W8IC zini5>*)Y%1>1)fjFS0pPDw4w;QLWDgTdqBfDS;H*52Z=2y2pi=UmlVXFRphtx)Ni+ za&jd;54x`21~^+Ioa7tVzIPiHCt<5Lg+|=Jc3m1>BLMs+dy4ZqC&z6&CWMs~) zuVd=?D~%H~yz=$MR8UaB{REIplcWAoar4lWq7T0ORh2ZBGOUwdUW~`5^-VWtDej6m zUrz|=iXxzJmP}5E7d486 ziiCnRs3-_Zh;)sJz^jyig0x8IfV9LAQc@}{B_bd#(m5cVLpKcF9W%hxf9HL_|6l)F zE*A@indiCBx##S&_dXY1GRR6Z`p?PC&t6ST2 z4fey}64qE;%&(F2+IMdaarf<+02GS4yrSwo{xBOvsV9P4UK$?a?)J!N6fe6q)Nbt*aqyJ= zo3cW|*S>_xL$3`)SEuF1Mskyu1G^yZpJ_rFPMMjvh|Q;IhrryZ%Wa~hP=~6mMCT;< z2rg8I*wriLH2k>ryI4_@qYCX2^6MGWmQC_-C(On|^m_!Csa!v0&1Pg45R$p@~y-B|5Q*+X1P{>5G1&HrOCY^4u@&&pDpuc&y@7U{B* zB*;MjcP8Y>(sqzU=Eis4>r9{Fdq)`5t|INFH?`)xQ&ZE6&?vdy$ZKDx;@X^V1$Nhgm(MHdOPk2WgljA)rJ! zj3EpYGc@e7)AA69pqjzw`WPN+-!vg#d^!>k`I-C*PGcJ8a5~Q-NIJFBt`ekMi)RVW z+)N)mJ!CRF?grG5o2rdJ5MufMjt*`Qc#O}DG>$gA`6S)BmyV9u*S_q-sYm*ut365( z`#jXNe6TLCKl`%gWZRt@J$c?V1EU{5i%QTg^wTvI9A>C3&^{WD1n9%VLVYrRr1*YU$?D&&}7*7@(WPW+%FIO)k zeHm`uhZEO$*QzDHu=MBc+_Vc1+6D$sk zfHP|gU}pcgHP9kIxRxziu0xr5SfJ+WnD*Q+*JFKV9-)4*CJO0dr{#*er#Tih5%ffi z4t}!+|N0-i-`{b4Gbj|2AYgO_sd1aC<@v$F6C&vU@*?}UYuEMT-JKp|X_52u_bboO zV#{Py62DiKFtV8TO+lzc&(BfsHiokQQTyTUXx<>G_lMrsw_$)%g76t)dTL5}yesNb zj`;s$yP;tcQHsS9dnEDCB??guzP@0!7v+}c=8Qky&Mzjsv^(CJmEPDD6i4Atw2n_u zx2aD2Aov!cOIJvBb~-I??d35Os5&uTE9Wuof+EIgJA@1IXED63RkQpnkn>-?gjYbc z%=vkUiQ1fw68Y}XAxjIJ&fE(4bxCg_=d0{;R+z=B-|le_p16wwBag=|sa#+F3y0o9 z-anl0LLA(fkROZ_tmqF!NQ4dN7~wssJ2nUBREsubJ|t=+7uh$lO*gr8>>huwU@i;% zj8h3-Wfx1le_K4ydKr<-xiBeC8K2_RyO}uA`V=qM$H~U>_jn`C+QA_$j+3f<41A%u zR&K+@%-q~LFH~EL3OICie`oGlZMg#xk@;9$T>RWXFltLVjft6K1*-t+B@GRY+NNaG ze`8;Z9z|ngI<9W&Ed%>PkbhN@Yb!L=G-gtJq4B9%xo+US%&RxgIhk2j8zTN}da;Bk zE1@w5dtMx$#dTIHtB0i73JBbNdSNaiw;Q910mzwKxqk%>tHdcwSBvuZFC23AoIv`{ z_)bh%f4t)ApjkW{+7X!&Hj$!5el`gCG5vre^72EpT|&y|9{RD{SJ1B#3NDye`zg8h zzoPS7pQq?7ar(^Ly3#m|x^gXrlhSW$QQ2!lR^xW8e4M9=&Al;&b)RdudL8GYeR4>b zweJ41e*LL?WrqSN*0@U6rf*LI*FTq2*8VrG zYGR8=Cq>x}jAsH@S1tcbt*q^w%pC2JURZUbF`Uq2WnE1|kV1>Z=M%#@+#F-ocW~SV zoP%IWtN4WU;FsAFe9|Ugg@J343u+xVG)&#;oP2!%&TKK)tLU|C6R-B+1gIu+SY6 z*H(2@W49&2h>Y(s`V$|-*&s$)ma8SSB`g+5y#6*b4BwwOCCtt=T`LzQg zw?f72>+c-@VbTx9}? zC(1yULY~_WzuU27VlgXZR{kRP%{ich9K>M+S`DKYw^RAayA& zP{-fua4SXQ@OEp?o@E(Y2wkG|i$P|6-6AvDzV~Bh-zWM*w3{E($NgbmRd-QQ(c6^5 zFG+^{J|ORFa0dyEGqg|PO_StpIjz^)N4z`F60w(CX#UdLWSAxXw_&Fk8|}#cm+j(8 zTHa<;v zZcpx~7H{f@%{+;{`XeE${#55`82f7dEY1ttVIC+RWj zko}!w|819_DIvf}eJ@~!X(n2X+NGn5ddFbg4w@*C5vx?Wz*=mWd|TRo0TU>=_1rOM zmp8jCrSd_1UmjHJXzg%oi;cf(&3m^ZOf_~psAh!ng$2zkKA3tG_S;PcB|8IG#~`m? zLUmtc&M-0%D$<|YdC%dH&~9eY7j{2~FiKv+nZ2y2X`A$A};`a;<3X%NM#C z_i2aI9Vjf~)-U_%X;tnZ%pRPRMrNPH7+pKQPz3dT@a@|-77v0H<$LNkZa8>uF2#!x z*lueno+cid$h=Q`;k#n3eQe-#q;eS5tdzK;ONlsQ#aKeePb&W66*}rQhxfm96 z|K_k3k;xgv=vPN($fc48HUt2kYV}_hassnX^88 zZ{w-aIjmCC@hBFnY(oXCms38>?8e0eeGkzgf3e^{X#E5_#1m8F_co{B)-1w&+NF42 zR$umd)Y!WskTD)jZIzA)8;{YCf}Yw`t63oV$_$xrpRIc6-SqM!Bgu=4`SRtK_&;>B zAN%)cX!-d9`Wx~rb-#L2x>2sI@bHt}8tJ6LTl)q_=Lj9irS)}WINYpo<{B}Jc_NFW z8bLWwV$S~rrwEgMK(VbWPzOk%BtAym91YIMSeaQ--YeU8FA14CqCehOdD$X6*^!bf zFNz?Oin(N&O6mHr=qmgbu4E5(lV(RRssk+-+@~ODim*nVOAQYT!7T)$cO|apx~7LI zOeKs3o7mvQwFK+;FE(Ok_kLt&lYxbo%u!F%Z@HZ3zQPQ!Mg{?EWiHIj<}u?e+R*>U zT=-!8J8tU?f3%(zvv|H$qU_<}p^$IU9?4vNJfz~hUD`3W=b*OboCaf+#dl@QgK^M* zBgED}@KzHiexE`HHDTtt#EJ}41h;gWa`QhdveZ&iHHVo)C-|r-D^tiFB_mo_$KFSi z`lmS7=IvSxywv=(VhfyOQ`OE~#SJL^@J~DsCPXH z{GNcDE`8tjVtc0IvHJ|@*A8e1`!v;u-4E>WjfsYnwp2JyO1H2|ROPyRiOA9|416mg zcW8fpWiL~?r0*cx%*ruF$-l57$7RQaA1*mdWsVc~8rHv^;V^-syHKTTElfQvj8EB< zfbkL#>a%IfkZ&$EcM4)ppW}HhA=$LM2@hA{V@6S8-z``iYV_qDnH+Ox5(=*QpXQUq zrcW`l%STXO*s4!&(lB;V+ezhy{01iX{;r+;3j z3=#@ksTg=KnwXr_dxbs?DPerO7s^)BSD#sCBht(F`=#;*ZQL8@9RF?Gaz+z>542Ge z0mo?x?5}oqtOG+-rK zQ-*N}3oA3`?^VJ1Z+6Aua`$Dh`z;c<<6%1q_R(S)gDS@;)lr5AI&aSoSE58S-SAOf zg*#BclF&v1Zcn_|hul9++G8<<)v*bVn}&~;?siz=9ZpYqfQ7kiBfMHa<$p2Pq&qOP z)=zwGJ1eyHQ3qSlcq6L98VW7h(B=Ohl52yG_#(6-d9`!qyC0Oa{tdorR>F^-VsSBf z65;)hVGKrE?2JL}RHLTs2B)W4y?xqyldJawuR3+}=9=#X=x=UrKGoG_jF#HGZ|J!Y z?75y9>a>OM3o(*DQgVet1&Pt>vvAdUja^OXPNhd5<0BYR9fb3=%7Wkwy}=#Yq3YlTkP+HWLR*WC0bo-Y?EIe z9vyS(J7-<+L=))d5RT0k9Qgm?*Q0!96J@b?7_iD+u5Qy2nEd#&mmg`R@sa3!U<7Tt zUwhK&Il^;l1+D0B@$pmpLbeHiurS)W+UMW|(xI*|0yfNdcw)W#Gsi{n>kT;V@cXf&yu5ju* zUG7iuLM5HPu7H&y*zzY776m)(jHb$Mw0nIVq0o*m${dqIe%To{mc2;<;2fe8}qD zclgeyN@32{SgiCI=n#D4AnHd*PXv6K3#I5eJFH=bsdQjsW4rWyaBM7E(q$DKm`&Xl zm#6*a|BWH}wXv|U{Jo(e6L5`H?CtcJL%*yDr}y?FnWNsv5=XtdW|M!GT)YdT;}QR| zoqnWeH{Rk!SIZvMqH5ImiPTp5Fm9e@==6ak zM!*ee9Q4hOXW8KCRd+T&YH`r6N|>V5pLDH2 z?d)2f^Q3)rl}hn~JeK#kSBu>i7L? zM_^`a$Wnl|_Uf<)-w5sA_v?_ z)E-p`JM4&ud!q%${&jic?=D&iGta;XxYKhuj@1vhWwNx9o1vru)mV%wXl|Cr9wx&7 z8hOmU9zOh!vPIJRk**={Hh@2>(DKw&PPg5o`jMLtA+Hj@g~NMHJ5-qt=ctuh857RO zmlQb9-6I^-%fSumn?O0oGQOuHS2CLizJ}Y2Q=B+#yiq79d`+R%08SH zC7p-l2&oJTk56`x=8}RjSa}&_8gFtPDFCa$7d%aSyfps!;#Ac`Ip!LBod-<|y$`lL z5c$?F_T3yq?=1X#o2e;~_FBblULse-k3zCcx8rZ7TfArWn*xq=audz?$ z{Kc|YsamXQv|=xhQQ6#EmB@B2cYn5KEI1x(y>71`G-F6-!THFB?tN_S`EbU78v^>s zVodc`{QK=MnOBhqAr3iw=BJ~;(pwjYddi+t%~%$n$x#? z$;YJJU%kHmzAcNttz$Pw9q#6~<8GkbeBr0l>`j8M^lr17Z&jwt7}Za$jlu)NJDac8 zbT05_56lc*gpEWLmcLeQ}t_*+D` zcc!nB02aK(N)Ds<(6C&nLs{*V#nG=^C-W7-Wj|LvE#!uV)a3%5;#O2hzFt^G5}~Uk9q#QRu2X1u**Yq3IAXx!hLMpQFF_e{sCkS=FL80=DH8-u9sTU5BS^n1B>NS1#myI7R(}&l z!wD;}Qwo{$^(-O+I5>!b1unrZ9$+x&MNa%ekF}#?dm ze3GxbtGfg1V6R#Nd9KxKEiF{HaWj6KupILMUX@D$!4JliawWRE;<0BE;LRVw@IF2S z3=%OH@dtYGgPgi|+XJU5o7`oy#C!pGHKFN0naT5DONelDxKA7zNp|(-+y3pz(OJTE zi=s7*#sP+=Z42@#u&4!tjAoxcs6*lebU29_cM#M+_?4DofV}#6&GONB~BnB>0@?e{AhC#-9Vz(|5G;$geyr1+?S}YNw^f^)< zc?=Jk+-OV_`KPHYfB)V)wnofR)O_+97S?Vx@%zlC~YkK^0)p2o||ISTP6L0P>^24XFkjhIIk ztH*_BR5o%v$zbv=!}H4v(-*otDC}{^OO?bssUC0je6)+PfhjZT6$6v6#Yt1<9jZCB z*EG7mA!t|21cp>r0%^#a(2v~C>9;4HWCQa;FYH|HA=do0P_c#Sl;Vy!vNXLTJp=IK zKeqfH#$>^-_@a1?(oRu1Th1eKEv3~K@(NQB@4V+L<7Bh9Duvb7uKqYA`*a}gF!!;< zcZX$L^b2Cg;q*ASq;;_^;yXyG7CsCIZf7fkK@f+{SE-(h;cqHz8HDA@Te4c-)Yy`# z%h^au<*4%O<4aL6m;OgpuyS4Hl@&oF0_~bBf8}qTXJe@*m~%uk`-&_$EY5 zu+jYXjSXAv=~`bAE6mA> zBnE<)AbESTIZBoRH=g>#z}2FVBQ!Sn2l)9YB1it5;G@JCxs$u|rFOX%c^`3{G3MlcFa<(?z=2ZY=`_MS?`w-@S_ zN#MCJ5I4AE?FKjKtxP|RyVftHiUTd`Ua(K*J(Yy{Yfw+p97IxjgQaZyA!Eb;_KV-n zne_nHKy`L@_Ox5KF|eSdk;TOlk(Y#=nqtWoD&E6rH1g-?!Hjaz@VedFtI4W!x~Y%M z$cdQ6^U5H1>mO`aP67sx%uY1^T7|)RzagP}yHI+=nbz(yzFf(DuT^#9%ZoA!+D{ zI;STFtOHZ;6y>&rQIydojZf{aQd`@#jG4>??<;T$L~s@@X-Vl)hY8AEnQJ$2YH}qT z9ior%8TbpO~^2dV>6Q=1~arGYkb}vxK1+UXe=3PbPG6O2eir9Z39_q7BHA=p`2k z|5sAM7Ci|IbKZMxl@8NC(2Y}xCO!|TPJaG^osHh^b%6bWoWKb*{7aKKkUy{D)5b0N6PP|p_DD{?Sj{85I2h6arsc7bN8_c7ujaLQ<)m%NcZCOjQ5 zhcgYCgG(a*Trm>D5ciHethD=fQ#8A@kVQ8=u&zQnrXZ^X_UR*w3<&a}(46==GJmvS zKQ;q<$;ilP^1gR8{Bj>BGjm%})!Zi_I`w8iIH9nP>A|rf76*m|Sz|@I0U)Y-?%0_` zBsOeY=(!67TkdrK57GynvRv~b@ZU3gYT`EfI_a^uyCT-w(xDTh;da6~Yf^lGLC(*= zeJI6DB2d5oR76zt9+IGT{vySRP?wi?nbFwO6ji6KPGld6<>q@uMFnb)u!y%7#UW=1 zW1yC-$w51J?6N7CD7AIZ!-iarfR(1)v*>v77PetvLHN%a9)@(V&vD|@Jr+0p%!!uZQ5d>=D~w)?jx{bX9H zUbnl2sY0afWv6~4{*8=^vKtdj^bb_u4snNSo}2!9S*YGsEF-)&Fu3fXb{R$<}%;l)vJF|prY^RgFP#v4>cuhEZDb4xR#Y)-v zX!0P-i2FDBH)-kb?sAt(2xnixZh)IwbK$Eow^esiSEGIUaSqT7qqnLNX1VU_Eu0>Z zkJo|_;|;hY##bL2=S@}FPX-bT!|^fY(b;fD``3FaU!nFf@tpBUXPfL-;79Nz39ar!Uj97+$LIWQ?W(A^>C|5hZdo%77= z+O=yJNNQ`PZk&P8C>ND?iv7>0Ai-b?V!;DvzPdznDQFd+H|CMS~{GUtXi@7~XL`g@sYzJzdI!gW-W zv$D2EJbDBsb9yZmCM_kk4{(yqd9h{601X7|)P`+tZYFOaL>A$<4)AEe&E0$k5j1J6 zUtKW)w+9;FFXAD>%tVlN;zd|H6?aRLmr*FyZ6(Ai74G0BHQQdCLInsK=P|%Wzs9p4 zaTZe>M$io>Y>aloPBc3x*FQ+l6^EIB7s6He@}sz?gt0R{uWM)C&OBr7k=giDmW`zj7yDZ&f%~UeQ8f^KAI*O6veVGUzwz@ zm!r%BFn|i z;)g#P*9gBj(Nh_1#Ia^^V&^GJGoI%Pcfk7EO^DV23{A!qe8tQ7HR5$vK)?k6c6HtC zX)jGQcvrdXb?WDjr3z7%dZQgL$-f*uXlQ6)FzK0V@GdA`1C*4G@3#5)o2kZcAFj60 z0*c}9`nq-7(yywjs(fL04-XzWaS@SMD6b3{-V401S%0czDXUGf9XlIaq3ui(;%sF- zoF|=xq$)XH8wP`oo`?wx2QDlucY-j3$KCh-@CpY>VW*f=*j?#|RyZ~y7p2R=8s15wel z?*9KsiJ-G6t^cvJ^DBZd$>Q40{EIivu}6rGEfd0dxVN-@;fV=FvSPdv@SnUFaC7}L zciJwl<42>z3#Jab6elZu1ZR*Pu-)MFm8A;@oo_9?T>XLQA@}`&5ZPgso`}!zYP?Pu zT&=@Gx&+5z58DKF@OKHX6X1@V^;^k-29g4Xj$zjd=*$J&we^@=71m8fzi#_K@o90E z*6YkVluMrc=;!sh{X5W2c*2K`>_jI}v0HoB zG+^h$66@cCSQgnff8*n9K-2XzR=s=oa$46j?&HIioV4c0yd2()OAdeVOhspBlpg@X=GpcjY} zKg)GP%kX{Iz3>c=^Ye2+R$)niufx2&Y68%t&e(&FCD1c@G)LicGyGV_4PCBH0Zs+5 zE7y<&Jo*3#$eBQEEAa#^+}TPZqtI^68V7cn2NE7xZB*yJfZKyXNZwBVu{fRRkP88^ zcpZf2I9LKW0R!)ltNLgf)*}dKBL#o;06pV!kWf{B&mB*^ACFl#M&g|a`fjL@_(Nfs zY0uMzQ0LWTt3_}<;w1A+oCMF_j}7?qt%DX$JT1w7o1h;ZSgi+MX`{!bwp)E;`L7F{ zI@mqtgBgvRz|zENB|WyHCT@ep!m|FrJxo8U;cPYKp!J5v+m2{<694{wb+-4Nx2u=G zst`5W)-7xz?2OS6hC4a!F~JA!?mD`>?J+;LoVO74W}d^Yif85J@uJSb zloy6b7=fWT!(JeyfQ6t*_uiGHqM^yEsbL0G6w@3YRb>V$WO&F<$Tik^FAi!5c7MW! z2%4aNN36tZqRAbalf%vCv)}A_l!A;TrI8Urov&rUIFPtqkHM*_PlAB^_5=Y``hMkw z3;}xtyrhq<`ddLH#JC`2tKJ6m!*Js;)0U8H|2~R8i49a9b6z}SMFyei=^P^B;${nf zgFSl;<^qGSGTw~49osbzHpUJ7ekkNEdUtj*g&{o@C`k+3Wr+4cWlkgK$qVzP9ULvP z=$RmXgG%6FWlCQ&1@aVNSsy!te!s2zRu4W;!}kgVGl}@^zN3GPLM?v0q22^K5PdgR z-Km>Ih_%~@*|nwu+SXEjLGeWrHm~I`)u)RQW@~ujL-F2gU^J+-4{zTOpx_7t_rVy- z@!>u)jP*NcVNAhCsw6xF{`0HXO+32pCC1g~K~PZrGo0N2q|i$yqU+ujk23mXq`gu0 zh5!woZtB86fk$0`hCOn|pRH;9z`Tneg;Q@G;Y-2BpFjdngn5@)FM7fRf0)Qn8ZC3! zIq?VxcTZe#QyakbJ|O>mj+YhX&)w2EIR9Z^>z)oODd(}t(Y5l3l3DD zy|+$=-(EZ$&Mt_3Dg&#Z?F@nTuVo2U)o#lio*epQo=8m^KhiejC42l;^w0~JwX@rY z@6ne}@gw{sV_{XVs#XCzpnL{z*BGPJQ>!|>@aYbma~ zK}n)apR{G#zdz2-PXM~!3I3v^ofMgDJ^!9L&w^gsSzHtW>CNNr?4+_CjIJ1CBA;E(ISX z16ZxoP(X3jugUH;1D=Y4WY8+0u~80;0+Om{p+E>d0Xk8RT1p5AWX1Xy5-3d2RxKPT zvWuW6;ulIv2N(cg4@eUrg(Dx7)C*e+#S)|b*Hbd=-Yq*7rBP*fEXe8MFfCS;$_kf{2N-4vE#{q=@J0~Yv05b`n zK%%Z+_Wu6h=@{1GhYX{jab$xx`VN(X%*lwh1X#VSamR_@xB14q;~!jg{45Lh|N72O z+f0oMmmlc4K6rZ%B9WZls!E2`G&IUeueoD+x17^r8VXcSYZh&AFAXR2Vu}&rD27 zSBu?%APC4A%x}k8DIe?-XU9mMw%O_j@C3$6Oo(b4f5IWm+L|&(?)*M+;fdPa6Biek z<_hA2B--zWvQ^5w*H?;jtEw0Y_&q{2xMuqDJ#g?qIN1IRL=~~#>nQca9U+UJ2N!r> zND~wiRe|=Ka=zg^dI=eq)2->UZ`_Ckqf~?cVP-@ zhX6flr$A8w?5=Q+HKDYw=aS>=vrx~NC zCBIK&`~9iu5YoHhdz~z2}(I^-?oL_Mt}XU0d2|s z^6L;ivWB8-$;f+X+N6(W?{2l;tq1ApJXbs*urumLUN4UpAy}uaT7)NmrxcASxHUI0PC`-x2TQ zpKLA9pW%m7Yk5s!Q*Pq`HmiCCT}IcsH`eI=4@r>b06&jh^#%KI#+C zDk!*0KtTx!xc5oZQa=IjMFcZrg?id=pAZ0$3ipGdCang?$3ubW|E#_AkoKOzMFYAUk_ z-=h5euIc6kZ^CJkub=I4njdaywMb>d?|bH+Mkp zYx)J_di0*(xnKPdk@r_o)Vey435)at0Jv zz~*?#yZUHNW`GjX>0=D;MWA~AVsE-ED=~|L0&*K*CoWIWVjO^*%4|vnj9nY(RGf)y z3qy$~nUu7&nQz@UvEp)mbqLOt=w%}USR$CtEGxS~T=J{!`%5tpj${O=P8a8nbHstA z@G1a=%^H4(H)H^ku0HCQcJ6)D@piR08HgfTy^D8rKN3!TkcBS?64;>M{C;~u?jT%aK2BTx0?7=R z{0Di#C4CKu-L(DEdorpSa_ri<>TSUAn13H<4}(GcP6|vEOF%}%nGl13#Q)zG9vq}G zFf=KY>S}#zreXhdo;C=*fQ2H)m_5SCyB42V*6lt~=V=ekxYr zeLdzj_G71~NW7(PBPWG~&}7lQtGnSA9w^n&jJ_c86~ys@k@|6Ra3;S0WDS2+}dHLdQeYp z7_sddPVBel_Cv(yiBE(0UeVFiuI}!O<-_U`KiVR)Wo735NuAmlbl)B>=_e#QXV`75(?$$^hyl z$qz-zO5=l1y7NOSf^9@YPV!?br42-Z1Hfc|k7PguKU*5b&JGP--*O=~z9jQuT+zf{ z^wY+0uCg0?Fvd@Wr3H>ZDLKnAwAul%pTssHZ_CaE!_r7B%^P;o|2Zh5mbF*rI!Y9A zF>pg9O~2$?YWS-`FljU{^&1EIE)*zfAO3Ahd<2OXsPQ})>fw%@FP=7%Kz4{4x_&98kK`KQQM;Tv0u9r;Wm7( zFU?cwA7ehrZno5;@&PEIn<(qmS| z;d-CXfA6-Nl0x>kCrU|)B>8d3EGSw4tW>(MRl%&Q!$% z;ahX(V^uewX`VO6TotHp^0EhfRi*vpMG`X1CDO_J)5PZTi?dC+dDqv@H(z)|SCA1m z`9Dz=*-Ad2YVZ~ZO%_M8UvYyE5>;7sp;PG%%hH5c1E?d%fgRu)_B)f}^PDX%{j{T* z0D%8wUxr5Cj;Dk}T&3449?&LopYE^k?R9|S2%Ka$M^C^u(|Y@p9dtcpn)N3y`KKDc zewc3X_ApKHH7BfVv(p8)_R*_zSsxAOEBj>dLdz{F;; zy%!xF{Y#J?AV#t;Ov1Jea5#M4=Xp+U_*=;GXNBLc8$*Fh#CqqM9x6n26*cvET-f&< zTy@`5hD4hNUkn%ot+@g69e>yrDX;?$fUArS;Ho$8IN6z)nmRkf%I1i!c!pjBOVtaL zVGP5eKSA+ZvM>S(6o|D)SwdN-Kj^z$*rm-Yfn932z?gDC92@IEFlI5uNlk z%M%t34kg-4W`>@9|B=;ZXR-3c9{RU0Mr_Tc7-4x*S0x1wtZvXR+T&=r9Pu$?1K5

}NB~G8n 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

}WR6Gd80l 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

?W0N2tz1~IY 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 diff --git a/lib/common/parse-tweet-file-content.js b/lib/common/parse-tweet-file-content.js index e62b58ad..77b1f885 100644 --- a/lib/common/parse-tweet-file-content.js +++ b/lib/common/parse-tweet-file-content.js @@ -13,6 +13,8 @@ const FRONT_MATTER_REGEX = new RegExp( ); function parseTweetFileContent(text, dir, isThread = false) { + text = text.trim(); + const options = { threadDelimiter: "---", reply: null, diff --git a/lib/common/tweet.js b/lib/common/tweet.js index 5f680cfe..37103fd2 100644 --- a/lib/common/tweet.js +++ b/lib/common/tweet.js @@ -1,203 +1,108 @@ module.exports = tweet; -const { promises: fs } = require("fs"); -const Twitter = require("twitter"); +const { TwitterApi } = require("twitter-api-v2"); const mime = require("mime-types"); const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; async function tweet({ twitterCredentials }, tweetData, tweetFile) { - const client = new Twitter(twitterCredentials); - return handleTweet(client, tweetData, tweetFile); + const client = new TwitterApi(twitterCredentials); + + const self = await client.v2.me(); + if (self.errors) throw self.errors; + + return handleTweet(client, self.data, tweetData, tweetFile); } -async function handleTweet(client, tweet, name) { +async function handleTweet(client, self, tweet, name) { if (tweet.retweet && !tweet.text) { // TODO: Should this throw if an invalid tweet is passed and there is no match? const match = tweet.retweet.match(TWEET_REGEX); - if (match) return createRetweet(client, match[1]); + if (match) return createRetweet(client, self, match[1]); } const tweetData = { - status: tweet.text, + text: tweet.text, }; if (tweet.poll) { - /* istanbul ignore if */ - if (!process.env.TWITTER_ACCOUNT_ID) { - throw new Error(`TWITTER_ACCOUNT_ID environment variable must be set`); - } - - tweetData.card_uri = await createPoll(client, { - name, - pollOptions: tweet.poll, - }).then((poll) => poll.card_uri); + tweetData.poll = { + duration_minutes: 1440, + options: tweet.poll, + }; } if (tweet.reply) { // TODO: Should this throw if an invalid reply is passed and there is no match? const match = tweet.reply.match(TWEET_REGEX); if (match) { - tweetData.in_reply_to_status_id = match[1]; - tweetData.auto_populate_reply_metadata = true; + tweetData.reply = { + in_reply_to_tweet_id: match[1], + }; } } if (tweet.retweet) { // TODO: Should this throw if an invalid tweet is passed and there is no match? const match = tweet.retweet.match(TWEET_REGEX); - if (match) tweetData.attachment_url = match[0]; + if (match) tweetData.quote_tweet_id = match[1]; + } + + if (tweet.media?.length) { + tweetData.media = { + media_ids: await Promise.all( + tweet.media.map((media) => createMedia(client, media)) + ), + }; } - if (tweet.media) - tweetData.media_ids = await Promise.all( - tweet.media.map((media) => createMedia(client, media)) - ).then((ids) => ids.join(",")); + const tweetResult = await createTweet(client, self, tweetData); - const tweetResult = await createTweet(client, tweetData); - if (tweet.thread) + if (tweet.thread) { tweetResult.thread = await handleTweet( client, + self, { ...tweet.thread, reply: tweetResult.url }, name ); + } return tweetResult; } -function createPoll( - client, - { - name, - text, - pollOptions: [first_choice, second_choice, third_choice, fourth_choice], - } -) { - return new Promise((resolve, reject) => { - // TODO: Switch to the v2 Twitter API for creating tweets and use the `poll` object, not Ads API - // https://developer.twitter.com/en/docs/ads/creatives/api-reference/poll#post-accounts-account-id-cards-poll - client.post( - `https://ads-api.twitter.com/11/accounts/${process.env.TWITTER_ACCOUNT_ID}/cards/poll`, - { - name, - duration_in_minutes: 1440, // two days - first_choice, - second_choice, - third_choice, - fourth_choice, - text, - }, - (error, result) => { - /* istanbul ignore if */ - if (error) { - return reject(error); - } - - resolve({ card_uri: result.data.card_uri }); - } - ); +async function createMedia(client, { file, alt }) { + const mediaId = await client.v1.uploadMedia(file, { + mimeType: mime.lookup(file), }); + if (alt) + await client.v1.createMediaMetadata(mediaId, { alt_text: { text: alt } }); + return mediaId; } -async function createMedia(client, { file, alt }) { - const { size } = await fs.stat(file); - - const id = await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "INIT", - total_bytes: size, - media_type: mime.lookup(file), - }, - (error, result) => { - if (error) return reject(error); - resolve(result.media_id_string); - } - ); +async function createTweet(client, self, options) { + return client.v2.tweet(options).then((data) => { + if (data.errors) throw data.errors; + return { + text: data.data.text, + url: `https://twitter.com/${self.username}/status/${data.data.id}`, + }; }); +} - const data = await fs.readFile(file); - - await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "APPEND", - media_id: id, - media: data, - segment_index: 0, - }, - (error) => { - if (error) return reject(error); - resolve(); - } - ); - }); +function createRetweet(client, self, id) { + return client.v2.retweet(self.id, id).then(async (data) => { + if (data.errors) throw data.errors; + if (!data.data.retweeted) throw new Error("Retweet failed"); - await new Promise((resolve, reject) => { - client.post( - "media/upload", - { - command: "FINALIZE", - media_id: id, - }, - (error) => { - if (error) return reject(error); - resolve(); - } + const other = await client.v2.singleTweet(id, { expansions: "author_id" }); + if (other.errors) throw other.errors; + const otherUser = other.includes.users.find( + (user) => user.id === other.data.author_id ); - }); - - // TODO: Support alt text (twitter library does not support JSON payloads) - // https://github.com/desmondmorris/node-twitter/issues/347 - // if (alt) { - // await new Promise((resolve, reject) => { - // client.post( - // "media/metadata/create", - // { - // media_id: id, - // alt_text: { - // text: alt, - // }, - // }, - // (error) => { - // if (error) return reject(error); - // resolve(); - // } - // ); - // }); - // } - - return id; -} - -function createTweet(client, options) { - return new Promise((resolve, reject) => { - client.post("statuses/update", options, (error, result) => { - if (error) { - return reject(error); - } - - resolve({ - text: options.status, - url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, - }); - }); - }); -} -function createRetweet(client, id) { - return new Promise((resolve, reject) => { - client.post(`statuses/retweet/${id}`, {}, (error, result) => { - if (error) { - return reject(error); - } - - resolve({ - retweet: `https://twitter.com/${result.retweeted_status.user.screen_name}/status/${result.retweeted_status.id_str}`, - url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, - }); - }); + return { + retweet: `https://twitter.com/${otherUser.username}/status/${id}`, + url: `https://twitter.com/${otherUser.username}/status/${id}`, // TODO: Twitter does not return the id of the retweet itself + }; }); } diff --git a/lib/index.js b/lib/index.js index 22a727c7..0350c77b 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,10 +17,10 @@ async function main() { const state = { startedAt: new Date().toISOString(), twitterCredentials: { - consumer_key: process.env.TWITTER_API_KEY, - consumer_secret: process.env.TWITTER_API_SECRET_KEY, - access_token_key: process.env.TWITTER_ACCESS_TOKEN, - access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET, + appKey: process.env.TWITTER_API_KEY, + appSecret: process.env.TWITTER_API_SECRET_KEY, + accessToken: process.env.TWITTER_ACCESS_TOKEN, + accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET, }, }; diff --git a/package-lock.json b/package-lock.json index 369f576e..1216e5d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "twitter-together", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "twitter-together", - "version": "2.1.0", + "version": "2.1.1", "license": "MIT", "dependencies": { "@actions/core": "1.9.1", @@ -14,12 +14,12 @@ "js-yaml": "^4.1.0", "mime-types": "^2.1.35", "parse-diff": "^0.9.0", - "twitter": "^1.7.1", + "twitter-api-v2": "^1.12.7", "twitter-text": "^3.1.0" }, "devDependencies": { "@semantic-release/git": "^10.0.1", - "@zeit/ncc": "^0.22.0", + "@vercel/ncc": "^0.34.0", "nock": "^13.2.9", "prettier": "^2.7.1", "semantic-release": "^19.0.5", @@ -1245,11 +1245,10 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@zeit/ncc": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.0.tgz", - "integrity": "sha512-zaS6chwztGSLSEzsTJw9sLTYxQt57bPFBtsYlVtbqGvmDUsfW7xgXPYofzFa1kB9ur2dRop6IxCwPnWLBVCrbQ==", - "deprecated": "@zeit/ncc is no longer maintained. Please use @vercel/ncc instead.", + "node_modules/@vercel/ncc": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz", + "integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==", "dev": true, "bin": { "ncc": "dist/ncc/cli.js" @@ -1279,26 +1278,6 @@ "node": ">=8" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, "node_modules/ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -1427,22 +1406,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, "node_modules/async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", @@ -1452,38 +1415,12 @@ "node": ">=10" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/before-after-hook": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", @@ -1648,11 +1585,6 @@ "cdl": "bin/cdl.js" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1747,17 +1679,6 @@ "color-support": "bin.js" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1883,7 +1804,8 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -1942,17 +1864,6 @@ "node": ">=8" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -2002,15 +1913,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -2075,14 +1977,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2160,15 +2054,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.254", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", @@ -2318,19 +2203,6 @@ "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -2372,11 +2244,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -2517,27 +2384,6 @@ "node": ">=8.0.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2678,14 +2524,6 @@ "node": ">=8.0.0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -2837,27 +2675,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -2954,20 +2771,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -3231,7 +3034,8 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "node_modules/is-windows": { "version": "1.0.2", @@ -3254,11 +3058,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "node_modules/issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -3458,11 +3257,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3487,20 +3281,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "node_modules/json5": { "version": "2.2.1", @@ -3551,20 +3336,6 @@ "node": "*" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -6686,14 +6457,6 @@ "node": ">=8" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6928,11 +6691,6 @@ "node": ">=8" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -7096,15 +6854,11 @@ "node": ">= 8" } }, - "node_modules/psl": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", - "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } @@ -7119,14 +6873,6 @@ "teleport": ">=0.2.0" } }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7334,37 +7080,6 @@ "node": ">=4" } }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7458,12 +7173,8 @@ "node_modules/safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true }, "node_modules/semantic-release": { "version": "19.0.5", @@ -7789,30 +7500,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -10098,23 +9785,6 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -10176,35 +9846,15 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, "node_modules/twemoji-parser": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-11.0.2.tgz", "integrity": "sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA==" }, - "node_modules/twitter": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", - "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", - "dependencies": { - "deep-extend": "^0.5.0", - "request": "^2.72.0" - } + "node_modules/twitter-api-v2": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.12.7.tgz", + "integrity": "sha512-kz0/algmi49xejjrKoEJEpXCa1Y0d2MHHhjJZS55ORcqzs8RHxvLO1oWeJNvFz/o+FQW+sFCpmM/5DyYy+QBXw==" }, "node_modules/twitter-text": { "version": "3.1.0", @@ -10332,14 +9982,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -10352,15 +9994,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10371,19 +10004,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", @@ -11566,10 +11186,10 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "@zeit/ncc": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.0.tgz", - "integrity": "sha512-zaS6chwztGSLSEzsTJw9sLTYxQt57bPFBtsYlVtbqGvmDUsfW7xgXPYofzFa1kB9ur2dRop6IxCwPnWLBVCrbQ==", + "@vercel/ncc": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz", + "integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==", "dev": true }, "agent-base": { @@ -11590,24 +11210,6 @@ "indent-string": "^3.2.0" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - } - } - }, "ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -11708,54 +11310,18 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, "async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, "before-after-hook": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", @@ -11867,11 +11433,6 @@ "redeyed": "~2.1.0" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -11947,14 +11508,6 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -12061,7 +11614,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "7.0.1", @@ -12107,14 +11661,6 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -12153,11 +11699,6 @@ } } }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" - }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -12208,11 +11749,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -12283,15 +11819,6 @@ } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "electron-to-chromium": { "version": "1.4.254", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", @@ -12403,16 +11930,6 @@ "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -12444,11 +11961,6 @@ } } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -12551,21 +12063,6 @@ "signal-exit": "^3.0.2" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -12674,14 +12171,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -12809,20 +12298,6 @@ "wordwrap": "^1.0.0" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -12894,16 +12369,6 @@ "debug": "4" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -13091,7 +12556,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-windows": { "version": "1.0.2", @@ -13111,11 +12577,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -13273,11 +12734,6 @@ "argparse": "^2.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -13296,20 +12752,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json5": { "version": "2.2.1", @@ -13343,17 +12790,6 @@ "through": ">=2.2.7 <3" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -15587,11 +15023,6 @@ } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -15763,11 +15194,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -15888,15 +15314,11 @@ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, - "psl": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", - "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -15904,11 +15326,6 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -16062,33 +15479,6 @@ "es6-error": "^4.0.1" } }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -16149,12 +15539,8 @@ "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true }, "semantic-release": { "version": "19.0.5", @@ -16417,22 +15803,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -17968,22 +17338,6 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -18027,32 +17381,15 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, "twemoji-parser": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-11.0.2.tgz", "integrity": "sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA==" }, - "twitter": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", - "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", - "requires": { - "deep-extend": "^0.5.0", - "request": "^2.72.0" - } + "twitter-api-v2": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.12.7.tgz", + "integrity": "sha512-kz0/algmi49xejjrKoEJEpXCa1Y0d2MHHhjJZS55ORcqzs8RHxvLO1oWeJNvFz/o+FQW+sFCpmM/5DyYy+QBXw==" }, "twitter-text": { "version": "3.1.0", @@ -18141,14 +17478,6 @@ "picocolors": "^1.0.0" } }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, "url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -18161,11 +17490,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18176,16 +17500,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", diff --git a/package.json b/package.json index 0b3a4455..b6b50aa8 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "js-yaml": "^4.1.0", "mime-types": "^2.1.35", "parse-diff": "^0.9.0", - "twitter": "^1.7.1", + "twitter-api-v2": "^1.12.7", "twitter-text": "^3.1.0" }, "devDependencies": { "@semantic-release/git": "^10.0.1", - "@zeit/ncc": "^0.22.0", + "@vercel/ncc": "^0.34.0", "nock": "^13.2.9", "prettier": "^2.7.1", "semantic-release": "^19.0.5", diff --git a/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js b/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js index 6bad7ad8..047a0770 100644 --- a/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js +++ b/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js @@ -6,57 +6,93 @@ const nock = require("nock"); const tap = require("tap"); +// SETUP +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; + // MOCK nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Cuddly :)\n"); - tap.equal(body.media_ids, "0000000000000000002"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Cuddly :)"); + tap.type(body.media, "object"); + tap.hasProp(body.media, "media_ids"); + tap.same(body.media.media_ids, ["0000000000000000002"]); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Cuddly :) https://t.co/abcdeFGHIJ", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "INIT"); - tap.equal(body.total_bytes, "107352"); - tap.equal(body.media_type, "image/png"); + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' + ); return true; }) - .reply(201, { + .reply(202, { media_id_string: "0000000000000000002", + expires_after_secs: 86400, + media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json", () => { - // TODO: Body just seems to be a string here, not an object. - // tap.equal(body.command, "APPEND"); - // tap.equal(body.media_id, "0000000000000000002"); - // tap.equal(body.media_type, ""); - // tap.equal(body.media, ""); - // tap.equal(body.segment_index, 0); + .post("/1.1/media/upload.json") + .reply(204) + + .post("/1.1/media/upload.json", (body) => { + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' + ); return true; }) - .reply(201) + .reply(201, { + media_id_string: "0000000000000000002", + media_key: "3_0000000000000000002", + size: 107352, + expires_after_secs: 86400, + image: { + image_type: "image/png", + w: 640, + h: 360, + }, + }) - .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "FINALIZE"); + .post("/1.1/media/metadata/create.json", (body) => { tap.equal(body.media_id, "0000000000000000002"); + tap.type(body.alt_text, "object"); + tap.hasProp(body.alt_text, "text"); + tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(201); - -// TODO: Support alt text (twitter library does not support JSON payloads) -// https://github.com/desmondmorris/node-twitter/issues/347 -// .post("/1.1/media/metadata/create.json", (body) => { -// tap.equal(body.media_id, "0000000000000000002"); -// tap.equal(body.alt_text.text, "Blahaj!"); -// return true; -// }) -// .reply(201); + .reply(200); process.chdir(__dirname); process.argv = [ diff --git a/test/command-line-has-tweet-with-front-matter-media/test.js b/test/command-line-has-tweet-with-front-matter-media/test.js index 2f56bda1..9b9e8e89 100644 --- a/test/command-line-has-tweet-with-front-matter-media/test.js +++ b/test/command-line-has-tweet-with-front-matter-media/test.js @@ -6,57 +6,93 @@ const nock = require("nock"); const tap = require("tap"); +// SETUP +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; + // MOCK nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Cuddly :)\n"); - tap.equal(body.media_ids, "0000000000000000002"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Cuddly :)"); + tap.type(body.media, "object"); + tap.hasProp(body.media, "media_ids"); + tap.same(body.media.media_ids, ["0000000000000000002"]); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Cuddly :) https://t.co/abcdeFGHIJ", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "INIT"); - tap.equal(body.total_bytes, "107352"); - tap.equal(body.media_type, "image/png"); + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' + ); return true; }) - .reply(201, { + .reply(202, { media_id_string: "0000000000000000002", + expires_after_secs: 86400, + media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json", () => { - // TODO: Body just seems to be a string here, not an object. - // tap.equal(body.command, "APPEND"); - // tap.equal(body.media_id, "0000000000000000002"); - // tap.equal(body.media_type, ""); - // tap.equal(body.media, ""); - // tap.equal(body.segment_index, 0); + .post("/1.1/media/upload.json") + .reply(204) + + .post("/1.1/media/upload.json", (body) => { + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' + ); return true; }) - .reply(201) + .reply(201, { + media_id_string: "0000000000000000002", + media_key: "3_0000000000000000002", + size: 107352, + expires_after_secs: 86400, + image: { + image_type: "image/png", + w: 640, + h: 360, + }, + }) - .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "FINALIZE"); + .post("/1.1/media/metadata/create.json", (body) => { tap.equal(body.media_id, "0000000000000000002"); + tap.type(body.alt_text, "object"); + tap.hasProp(body.alt_text, "text"); + tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(201); - -// TODO: Support alt text (twitter library does not support JSON payloads) -// https://github.com/desmondmorris/node-twitter/issues/347 -// .post("/1.1/media/metadata/create.json", (body) => { -// tap.equal(body.media_id, "0000000000000000002"); -// tap.equal(body.alt_text.text, "Blahaj!"); -// return true; -// }) -// .reply(201); + .reply(200); process.chdir(__dirname); process.argv = ["node", "lib/index.js", "--file", "tweets/hello-world.tweet"]; diff --git a/test/command-line-has-tweet/test.js b/test/command-line-has-tweet/test.js index e8b2f0c1..00cc8082 100644 --- a/test/command-line-has-tweet/test.js +++ b/test/command-line-has-tweet/test.js @@ -5,16 +5,31 @@ const nock = require("nock"); const tap = require("tap"); +// SETUP +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; + // MOCK nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Hello, world!\n"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Hello, world!"); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Hello, world!", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-media/test.js b/test/push-main-has-tweet-with-front-matter-media/test.js index e7332857..e1f8dec5 100644 --- a/test/push-main-has-tweet-with-front-matter-media/test.js +++ b/test/push-main-has-tweet-with-front-matter-media/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -59,55 +63,85 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Cuddly :)"); - tap.equal(body.media_ids, "0000000000000000002"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Cuddly :)"); + tap.type(body.media, "object"); + tap.hasProp(body.media, "media_ids"); + tap.same(body.media.media_ids, ["0000000000000000002"]); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Cuddly :) https://t.co/abcdeFGHIJ", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "INIT"); - tap.equal(body.total_bytes, "107352"); - tap.equal(body.media_type, "image/png"); + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' + ); return true; }) - .reply(201, { + .reply(202, { media_id_string: "0000000000000000002", + expires_after_secs: 86400, + media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json", () => { - // TODO: Body just seems to be a string here, not an object. - // tap.equal(body.command, "APPEND"); - // tap.equal(body.media_id, "0000000000000000002"); - // tap.equal(body.media_type, ""); - // tap.equal(body.media, ""); - // tap.equal(body.segment_index, 0); + .post("/1.1/media/upload.json") + .reply(204) + + .post("/1.1/media/upload.json", (body) => { + tap.match( + body, + 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' + ); + tap.match( + body, + 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' + ); return true; }) - .reply(201) + .reply(201, { + media_id_string: "0000000000000000002", + media_key: "3_0000000000000000002", + size: 107352, + expires_after_secs: 86400, + image: { + image_type: "image/png", + w: 640, + h: 360, + }, + }) - .post("/1.1/media/upload.json", (body) => { - tap.equal(body.command, "FINALIZE"); + .post("/1.1/media/metadata/create.json", (body) => { tap.equal(body.media_id, "0000000000000000002"); + tap.type(body.alt_text, "object"); + tap.hasProp(body.alt_text, "text"); + tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(201); - -// TODO: Support alt text (twitter library does not support JSON payloads) -// https://github.com/desmondmorris/node-twitter/issues/347 -// .post("/1.1/media/metadata/create.json", (body) => { -// tap.equal(body.media_id, "0000000000000000002"); -// tap.equal(body.alt_text.text, "Blahaj!"); -// return true; -// }) -// .reply(201); + .reply(200); process.on("exit", (code) => { tap.equal(code, 0); diff --git a/test/push-main-has-tweet-with-front-matter-poll/test.js b/test/push-main-has-tweet-with-front-matter-poll/test.js index 18eff894..6c1ab082 100644 --- a/test/push-main-has-tweet-with-front-matter-poll/test.js +++ b/test/push-main-has-tweet-with-front-matter-poll/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -22,9 +26,6 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; -// Needed for polls only -process.env.TWITTER_ACCOUNT_ID = "account123"; - // MOCK nock("https://api.github.com", { reqheaders: { @@ -57,27 +58,29 @@ nock("https://api.github.com", { ) .reply(201); -// lookup user ID -nock("https://ads-api.twitter.com") - .post("/11/accounts/account123/cards/poll", (body) => { - tap.equal(body.name, "tweets/hello-world.tweet"); - tap.equal(body.duration_in_minutes, "1440"); // two days - tap.equal(body.first_choice, "a"); - tap.equal(body.second_choice, "b"); - return true; +nock("https://api.twitter.com") + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, }) - .reply(201, { data: { card_uri: "card://123" } }); -nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.card_uri, "card://123"); - tap.equal(body.status, "Hello, world!"); + .post("/2/tweets", (body) => { + tap.equal(body.text, "Hello, world!"); + tap.type(body.poll, "object"); + tap.hasProp(body.poll, "options"); + tap.same(body.poll.options, ["a", "b"]); + tap.hasProp(body.poll, "duration_minutes"); + tap.equal(body.poll.duration_minutes, 1440); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Hello, world!", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-quote/test.js b/test/push-main-has-tweet-with-front-matter-quote/test.js index 307c766c..6a22f02d 100644 --- a/test/push-main-has-tweet-with-front-matter-quote/test.js +++ b/test/push-main-has-tweet-with-front-matter-quote/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -55,18 +59,24 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Smart thinking!"); - tap.equal( - body.attachment_url, - "https://twitter.com/m2rg/status/0000000000000000001" - ); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Smart thinking!"); + tap.equal(body.quote_tweet_id, "0000000000000000001"); return true; }) .reply(201, { - id_str: "0000000000000000002", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000002", + text: "Smart thinking! https://t.co/abcdeFGHIJ", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-reply/test.js b/test/push-main-has-tweet-with-front-matter-reply/test.js index ae309e48..74ac31d7 100644 --- a/test/push-main-has-tweet-with-front-matter-reply/test.js +++ b/test/push-main-has-tweet-with-front-matter-reply/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -55,16 +59,26 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Good idea :)"); - tap.equal(body.in_reply_to_status_id, "0000000000000000001"); - tap.equal(body.auto_populate_reply_metadata, "true"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Good idea :)"); + tap.type(body.reply, "object"); + tap.hasProp(body.reply, "in_reply_to_tweet_id"); + tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); return true; }) .reply(201, { - id_str: "0000000000000000002", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000002", + text: "Good idea :)", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-retweet/test.js b/test/push-main-has-tweet-with-front-matter-retweet/test.js index 995dde56..5e61d54b 100644 --- a/test/push-main-has-tweet-with-front-matter-retweet/test.js +++ b/test/push-main-has-tweet-with-front-matter-retweet/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -47,7 +51,7 @@ nock("https://api.github.com", { (body) => { tap.equal( body.body, - "Tweeted:\n\n- https://twitter.com/gr2m/status/0000000000000000002" + "Tweeted:\n\n- https://twitter.com/m2rg/status/0000000000000000001" ); return true; } @@ -55,17 +59,40 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/retweet/0000000000000000001.json") + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/users/123/retweets", (body) => { + tap.equal(body.tweet_id, "0000000000000000001"); + return true; + }) .reply(201, { - id_str: "0000000000000000002", - user: { - screen_name: "gr2m", + data: { + retweeted: true, }, - retweeted_status: { - id_str: "0000000000000000001", - user: { - screen_name: "m2rg", - }, + }) + + .get("/2/tweets/0000000000000000001?expansions=author_id") + .reply(200, { + data: { + id: "0000000000000000001", + text: "", + author_id: "456", + }, + includes: { + users: [ + { + id: "456", + name: "m2rg", + username: "m2rg", + }, + ], }, }); diff --git a/test/push-main-has-tweet-with-poll/test.js b/test/push-main-has-tweet-with-poll/test.js index e94f5a5a..0826baae 100644 --- a/test/push-main-has-tweet-with-poll/test.js +++ b/test/push-main-has-tweet-with-poll/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -22,9 +26,6 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; -// Needed for polls only -process.env.TWITTER_ACCOUNT_ID = "account123"; - // MOCK nock("https://api.github.com", { reqheaders: { @@ -57,29 +58,34 @@ nock("https://api.github.com", { ) .reply(201); -// lookup user ID -nock("https://ads-api.twitter.com") - .post("/11/accounts/account123/cards/poll", (body) => { - tap.equal(body.name, "tweets/my-poll.tweet"); - tap.equal(body.duration_in_minutes, "1440"); // two days - tap.equal(body.first_choice, "option 1"); - tap.equal(body.second_choice, "option 2"); - tap.equal(body.third_choice, "option 3"); - tap.equal(body.fourth_choice, "option 4"); - return true; +nock("https://api.twitter.com") + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, }) - .reply(201, { data: { card_uri: "card://123" } }); -nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.card_uri, "card://123"); - tap.equal(body.status, "Here is my poll"); + .post("/2/tweets", (body) => { + tap.equal(body.text, "Here is my poll"); + tap.type(body.poll, "object"); + tap.hasProp(body.poll, "options"); + tap.same(body.poll.options, [ + "option 1", + "option 2", + "option 3", + "option 4", + ]); + tap.hasProp(body.poll, "duration_minutes"); + tap.equal(body.poll.duration_minutes, 1440); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Here is my poll", }, }); diff --git a/test/push-main-has-tweet-with-thread/test.js b/test/push-main-has-tweet-with-thread/test.js index 5e2567b8..089a2716 100644 --- a/test/push-main-has-tweet-with-thread/test.js +++ b/test/push-main-has-tweet-with-thread/test.js @@ -16,6 +16,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -24,9 +28,6 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; -// Needed for polls only -process.env.TWITTER_ACCOUNT_ID = "account123"; - // MOCK nock("https://api.github.com", { reqheaders: { @@ -60,27 +61,37 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Hello, world!"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Hello, world!"); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Hello, world!", }, }) - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Second Tweet!"); - tap.equal(body.in_reply_to_status_id, "0000000000000000001"); - tap.equal(body.auto_populate_reply_metadata, "true"); + .post("/2/tweets", (body) => { + tap.equal(body.text, "Second Tweet!"); + tap.type(body.reply, "object"); + tap.hasProp(body.reply, "in_reply_to_tweet_id"); + tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); return true; }) .reply(201, { - id_str: "0000000000000000002", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000002", + text: "Second Tweet!", }, }); diff --git a/test/push-main-has-tweet-with-trailing-whitespace/test.js b/test/push-main-has-tweet-with-trailing-whitespace/test.js index c2dc5d60..64d06659 100644 --- a/test/push-main-has-tweet-with-trailing-whitespace/test.js +++ b/test/push-main-has-tweet-with-trailing-whitespace/test.js @@ -15,6 +15,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -56,29 +60,40 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Hello, world!"); - tap.equal(body.in_reply_to_status_id, "0000000000000000001"); - tap.equal(body.auto_populate_reply_metadata, "true"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Hello, world!"); + tap.type(body.reply, "object"); + tap.hasProp(body.reply, "in_reply_to_tweet_id"); + tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); return true; }) .reply(201, { - id_str: "0000000000000000002", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000002", + text: "Hello, world!", }, }) - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Second Tweet!"); - tap.equal(body.in_reply_to_status_id, "0000000000000000002"); - tap.equal(body.auto_populate_reply_metadata, "true"); + .post("/2/tweets", (body) => { + tap.equal(body.text, "Second Tweet!"); + tap.type(body.reply, "object"); + tap.hasProp(body.reply, "in_reply_to_tweet_id"); + tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000002"); return true; }) .reply(201, { - id_str: "0000000000000000003", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000003", + text: "Second Tweet!", }, }); diff --git a/test/push-main-has-tweet/test.js b/test/push-main-has-tweet/test.js index a50ffd2e..22b82935 100644 --- a/test/push-main-has-tweet/test.js +++ b/test/push-main-has-tweet/test.js @@ -14,6 +14,10 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); +process.env.TWITTER_API_KEY = "key123"; +process.env.TWITTER_API_SECRET_KEY = "keysecret123"; +process.env.TWITTER_ACCESS_TOKEN = "token123"; +process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -55,14 +59,23 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .post("/1.1/statuses/update.json", (body) => { - tap.equal(body.status, "Hello, world!"); + .get("/2/users/me") + .reply(200, { + data: { + id: "123", + name: "gr2m", + username: "gr2m", + }, + }) + + .post("/2/tweets", (body) => { + tap.equal(body.text, "Hello, world!"); return true; }) .reply(201, { - id_str: "0000000000000000001", - user: { - screen_name: "gr2m", + data: { + id: "0000000000000000001", + text: "Hello, world!", }, });