diff --git a/dist/index.js b/dist/index.js
index 402e610..41b102c 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -196,14 +196,14 @@ function success(env) {
const jobName = core.getInput('jobName');
const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;
const msg = slack_block_builder_1.Message({
- text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`
+ text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`
}).blocks(slack_block_builder_1.Blocks.Section({
- text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
+ text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
}));
const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);
if (dependabot) {
msg.blocks(slack_block_builder_1.Blocks.Section({
- text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
+ text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
}));
}
const context = getContext(env);
@@ -220,16 +220,16 @@ function failure(env, steps) {
const jobName = core.getInput('jobName');
const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;
const msg = slack_block_builder_1.Message({
- text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`
+ text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`
}).blocks([
slack_block_builder_1.Blocks.Section({
- text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
+ text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
})
]);
const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);
if (dependabot) {
msg.blocks(slack_block_builder_1.Blocks.Section({
- text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
+ text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
}));
}
if (Object.keys(steps).length > 0) {
@@ -265,7 +265,6 @@ function getContext(env) {
return slack_block_builder_1.Blocks.Context().elements([
`From <${urls.commit}|\`${shortSha}\`> on ${gha_1.getRefContext(env.GITHUB_REF)}`,
`Triggered by *${env.GITHUB_EVENT_NAME}*`
- // ...(duration ? [`Took *${duration}*`] : [])
]);
}
exports.getContext = getContext;
diff --git a/dist/index.js.map b/dist/index.js.map
index d93eca0..3833de2 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["../webpack://actions-slack-notify/./lib/gha.js","../webpack://actions-slack-notify/./lib/main.js","../webpack://actions-slack-notify/./lib/slack.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/command.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/core.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/file-command.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/utils.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/IncomingWebhook.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/errors.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/index.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/instrument.js","../webpack://actions-slack-notify/./node_modules/axios/index.js","../webpack://actions-slack-notify/./node_modules/axios/lib/adapters/http.js","../webpack://actions-slack-notify/./node_modules/axios/lib/adapters/xhr.js","../webpack://actions-slack-notify/./node_modules/axios/lib/axios.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/Cancel.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/CancelToken.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/isCancel.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/Axios.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/InterceptorManager.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/buildFullPath.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/createError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/dispatchRequest.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/enhanceError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/mergeConfig.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/settle.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/transformData.js","../webpack://actions-slack-notify/./node_modules/axios/lib/defaults.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/bind.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/buildURL.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/combineURLs.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/cookies.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isAbsoluteURL.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isAxiosError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isURLSameOrigin.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/normalizeHeaderName.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/parseHeaders.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/spread.js","../webpack://actions-slack-notify/./node_modules/axios/lib/utils.js","../webpack://actions-slack-notify/./node_modules/debug/src/browser.js","../webpack://actions-slack-notify/./node_modules/debug/src/common.js","../webpack://actions-slack-notify/./node_modules/debug/src/index.js","../webpack://actions-slack-notify/./node_modules/debug/src/node.js","../webpack://actions-slack-notify/./node_modules/follow-redirects/debug.js","../webpack://actions-slack-notify/./node_modules/follow-redirects/index.js","../webpack://actions-slack-notify/./node_modules/has-flag/index.js","../webpack://actions-slack-notify/./node_modules/ms/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/attachment.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/base/bit.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/confirmation-dialog.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/option-group.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/option.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/actions.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/base/block.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/context.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/divider.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/file.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/header.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/image.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/input.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/section.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/action-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/confirmable-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/multiselect-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/select-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/selectable-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/button.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/channel-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/channel-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/checkboxes.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/conversations-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/conversations-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/datepicker.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/external-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/external-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/img.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/overflow-menu.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/radio-buttons.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/static-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/static-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/text-input.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/time-picker.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/user-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/user-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/base/object-base.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/dispatch-actions-configuration-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/filter-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/markdown-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/plain-text-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/advanced-surface.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/surface.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/home-tab.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/message.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/modal.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/categories.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/classes.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/param-map.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/props.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/types.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/values.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/block-builder-error.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/block-builder-validation-error.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/builder-helper.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/validation-helper.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/builder.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/slack-dto.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/validator.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/validators/default-type-rules.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/validators/type-validators.js","../webpack://actions-slack-notify/./node_modules/supports-color/index.js","../webpack://actions-slack-notify/external \"assert\"","../webpack://actions-slack-notify/external \"fs\"","../webpack://actions-slack-notify/external \"http\"","../webpack://actions-slack-notify/external \"https\"","../webpack://actions-slack-notify/external \"os\"","../webpack://actions-slack-notify/external \"path\"","../webpack://actions-slack-notify/external \"stream\"","../webpack://actions-slack-notify/external \"tty\"","../webpack://actions-slack-notify/external \"url\"","../webpack://actions-slack-notify/external \"util\"","../webpack://actions-slack-notify/external \"zlib\"","../webpack://actions-slack-notify/webpack/bootstrap","../webpack://actions-slack-notify/webpack/runtime/compat","../webpack://actions-slack-notify/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getURLs = exports.getRefContext = exports.getTag = exports.getBranch = exports.getPRNumber = exports.parseDependabotRef = void 0;\n// --\nconst PR_REF_REGEX = /^refs\\/pull\\/(\\d+)\\/merge$/;\nconst BRANCH_REF_REGEX = /^refs\\/heads\\/(.+)$/;\nconst TAG_REF_REGEX = /^refs\\/tags\\/(.+)$/;\nconst DEPENDABOT_REGEX = /^dependabot\\/(?:[\\w]+)\\/([\\w/-]+)-([\\d]+\\.[\\d]+\\.[\\d]+.*)$/;\n// --\nfunction parseDependabotRef(ref) {\n if (!ref) {\n return undefined;\n }\n const match = ref.match(DEPENDABOT_REGEX);\n if (!match) {\n return undefined;\n }\n return {\n package: match[1].includes('/') ? `@${match[1]}` : match[1],\n version: match[2]\n };\n}\nexports.parseDependabotRef = parseDependabotRef;\nfunction getPRNumber(ref) {\n const match = ref.match(PR_REF_REGEX);\n if (!match)\n return undefined;\n return parseInt(match[1]);\n}\nexports.getPRNumber = getPRNumber;\n// --\nfunction getBranch(ref) {\n const match = ref.match(BRANCH_REF_REGEX);\n if (!match)\n return undefined;\n return match[1];\n}\nexports.getBranch = getBranch;\n// --\nfunction getTag(ref) {\n const match = ref.match(TAG_REF_REGEX);\n if (!match)\n return undefined;\n return match[1];\n}\nexports.getTag = getTag;\n// --\nfunction getRefContext(ref) {\n const pr = getPRNumber(ref);\n if (pr) {\n return `PR *#${pr}*`;\n }\n const tag = getTag(ref);\n if (tag) {\n return `tag *${tag}*`;\n }\n const branch = getBranch(ref);\n if (branch) {\n return `branch *${branch}*`;\n }\n return `*${ref}*`;\n}\nexports.getRefContext = getRefContext;\n// --\nfunction getURLs({ GITHUB_REPOSITORY, GITHUB_SHA, GITHUB_REF, GITHUB_SERVER_URL = 'https://github.com', GITHUB_RUN_ID }) {\n const prNumber = getPRNumber(GITHUB_REF);\n return {\n repo: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}`,\n commit: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}`,\n run: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}`,\n pr: prNumber\n ? `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/pull/${prNumber}`\n : undefined\n };\n}\nexports.getURLs = getURLs;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst webhook_1 = require(\"@slack/webhook\");\nconst slack_1 = require(\"./slack\");\nfunction run() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const url = process.env.SLACK_WEBHOOK_URL;\n if (!url) {\n throw new Error('Missing SLACK_WEBHOOK_URL environment variable');\n }\n const webhook = new webhook_1.IncomingWebhook(url);\n const status = core.getInput('status');\n const env = process.env;\n core.info(core.getInput('steps'));\n if (status === 'success') {\n const msg = slack_1.success(env);\n yield webhook.send(msg);\n }\n else if (status === 'failure') {\n const msg = slack_1.failure(env, JSON.parse(core.getInput('steps')));\n yield webhook.send(msg);\n }\n }\n catch (error) {\n core.setFailed(error.message);\n }\n });\n}\nrun();\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActions = exports.getContext = exports.failure = exports.success = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nconst slack_block_builder_1 = require(\"slack-block-builder\");\nconst gha_1 = require(\"./gha\");\nfunction success(env) {\n const { GITHUB_WORKFLOW, GITHUB_REPOSITORY, GITHUB_HEAD_REF } = env;\n const urls = gha_1.getURLs(env);\n const jobName = core.getInput('jobName');\n const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;\n const msg = slack_block_builder_1.Message({\n text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`\n }).blocks(slack_block_builder_1.Blocks.Section({\n text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`\n }));\n const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);\n if (dependabot) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`\n }));\n }\n const context = getContext(env);\n const actions = getActions(env, 'success');\n msg.blocks([context, actions]);\n msg.printPreviewUrl();\n return msg.buildToObject();\n}\nexports.success = success;\n// --\nfunction failure(env, steps) {\n const { GITHUB_WORKFLOW, GITHUB_REPOSITORY, GITHUB_HEAD_REF } = env;\n const urls = gha_1.getURLs(env);\n const jobName = core.getInput('jobName');\n const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;\n const msg = slack_block_builder_1.Message({\n text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`\n }).blocks([\n slack_block_builder_1.Blocks.Section({\n text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`\n })\n ]);\n const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);\n if (dependabot) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`\n }));\n }\n if (Object.keys(steps).length > 0) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: Object.entries(steps)\n .map(([id, { outcome }]) => {\n const icon = {\n failure: '✘',\n success: '✔︎',\n skipped: '○'\n }[outcome];\n const format = {\n failure: '*',\n success: '',\n skipped: '_'\n }[outcome];\n return `${format}${icon} ${id}${format}`;\n })\n .join('\\n')\n }));\n }\n const context = getContext(env);\n const actions = getActions(env, 'failure');\n msg.blocks([context, actions]);\n msg.printPreviewUrl();\n return msg.buildToObject();\n}\nexports.failure = failure;\n// --\nfunction getContext(env) {\n const urls = gha_1.getURLs(env);\n const shortSha = env.GITHUB_SHA.slice(0, 8);\n return slack_block_builder_1.Blocks.Context().elements([\n `From <${urls.commit}|\\`${shortSha}\\`> on ${gha_1.getRefContext(env.GITHUB_REF)}`,\n `Triggered by *${env.GITHUB_EVENT_NAME}*`\n // ...(duration ? [`Took *${duration}*`] : [])\n ]);\n}\nexports.getContext = getContext;\n// --\nfunction getActions(env, status) {\n const urls = gha_1.getURLs(env);\n const viewWorkflowButton = slack_block_builder_1.Elements.Button({\n text: status === 'failure' ? 'View Failed Workflow' : 'View Workflow',\n url: urls.run\n });\n const actions = slack_block_builder_1.Blocks.Actions().elements(status === 'failure'\n ? viewWorkflowButton.danger()\n : viewWorkflowButton.end());\n if (urls.pr !== undefined) {\n const prNumber = gha_1.getPRNumber(env.GITHUB_REF);\n actions.elements(slack_block_builder_1.Elements.Button({\n text: `View Pull Request #${prNumber}`,\n url: urls.pr\n }));\n }\n return actions;\n}\nexports.getActions = getActions;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n }\n else {\n command_1.issueCommand('set-env', { name }, convertedVal);\n }\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input. The value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n command_1.issueCommand('set-output', { name }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n */\nfunction error(message) {\n command_1.issue('error', message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds an warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n */\nfunction warning(message) {\n command_1.issue('warning', message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', { name }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncomingWebhook = void 0;\nconst axios_1 = __importDefault(require(\"axios\"));\nconst errors_1 = require(\"./errors\");\nconst instrument_1 = require(\"./instrument\");\n/**\n * A client for Slack's Incoming Webhooks\n */\nclass IncomingWebhook {\n constructor(url, defaults = {}) {\n if (url === undefined) {\n throw new Error('Incoming webhook URL is required');\n }\n this.url = url;\n this.defaults = defaults;\n this.axios = axios_1.default.create({\n baseURL: url,\n httpAgent: defaults.agent,\n httpsAgent: defaults.agent,\n maxRedirects: 0,\n proxy: false,\n headers: {\n 'User-Agent': instrument_1.getUserAgent(),\n },\n });\n delete this.defaults.agent;\n }\n /**\n * Send a notification to a conversation\n * @param message - the message (a simple string, or an object describing the message)\n */\n async send(message) {\n // NOTE: no support for TLS config\n let payload = Object.assign({}, this.defaults);\n if (typeof message === 'string') {\n payload.text = message;\n }\n else {\n payload = Object.assign(payload, message);\n }\n try {\n const response = await this.axios.post(this.url, payload);\n return this.buildResult(response);\n }\n catch (error) {\n // Wrap errors in this packages own error types (abstract the implementation details' types)\n if (error.response !== undefined) {\n throw errors_1.httpErrorWithOriginal(error);\n }\n else if (error.request !== undefined) {\n throw errors_1.requestErrorWithOriginal(error);\n }\n else {\n throw error;\n }\n }\n }\n /**\n * Processes an HTTP response into an IncomingWebhookResult.\n */\n buildResult(response) {\n return {\n text: response.data,\n };\n }\n}\nexports.IncomingWebhook = IncomingWebhook;\n//# sourceMappingURL=IncomingWebhook.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpErrorWithOriginal = exports.requestErrorWithOriginal = exports.ErrorCode = void 0;\n/**\n * A dictionary of codes for errors produced by this package\n */\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"RequestError\"] = \"slack_webhook_request_error\";\n ErrorCode[\"HTTPError\"] = \"slack_webhook_http_error\";\n})(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));\n/**\n * Factory for producing a {@link CodedError} from a generic error\n */\nfunction errorWithCode(error, code) {\n // NOTE: might be able to return something more specific than a CodedError with conditional typing\n const codedError = error;\n codedError.code = code;\n return codedError;\n}\n/**\n * A factory to create IncomingWebhookRequestError objects\n * @param original The original error\n */\nfunction requestErrorWithOriginal(original) {\n const error = errorWithCode(new Error(`A request error occurred: ${original.message}`), ErrorCode.RequestError);\n error.original = original;\n return error;\n}\nexports.requestErrorWithOriginal = requestErrorWithOriginal;\n/**\n * A factory to create IncomingWebhookHTTPError objects\n * @param original The original error\n */\nfunction httpErrorWithOriginal(original) {\n const error = errorWithCode(new Error(`An HTTP protocol error occurred: statusCode = ${original.response.status}`), ErrorCode.HTTPError);\n error.original = original;\n return error;\n}\nexports.httpErrorWithOriginal = httpErrorWithOriginal;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorCode = exports.IncomingWebhook = void 0;\nvar IncomingWebhook_1 = require(\"./IncomingWebhook\");\nObject.defineProperty(exports, \"IncomingWebhook\", { enumerable: true, get: function () { return IncomingWebhook_1.IncomingWebhook; } });\nvar errors_1 = require(\"./errors\");\nObject.defineProperty(exports, \"ErrorCode\", { enumerable: true, get: function () { return errors_1.ErrorCode; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgent = exports.addAppMetadata = void 0;\nconst os = __importStar(require(\"os\"));\nconst packageJson = require('../package.json'); // tslint:disable-line:no-require-imports no-var-requires\n/**\n * Replaces occurrences of '/' with ':' in a string, since '/' is meaningful inside User-Agent strings as a separator.\n */\nfunction replaceSlashes(s) {\n return s.replace('/', ':');\n}\nconst baseUserAgent = `${replaceSlashes(packageJson.name)}/${packageJson.version} ` +\n `node/${process.version.replace('v', '')} ` +\n `${os.platform()}/${os.release()}`;\nconst appMetadata = {};\n/**\n * Appends the app metadata into the User-Agent value\n * @param appMetadata.name name of tool to be counted in instrumentation\n * @param appMetadata.version version of tool to be counted in instrumentation\n */\nfunction addAppMetadata({ name, version }) {\n appMetadata[replaceSlashes(name)] = version;\n}\nexports.addAppMetadata = addAppMetadata;\n/**\n * Returns the current User-Agent value for instrumentation\n */\nfunction getUserAgent() {\n const appIdentifier = Object.entries(appMetadata).map(([name, version]) => `${name}/${version}`).join(' ');\n // only prepend the appIdentifier when its not empty\n return ((appIdentifier.length > 0) ? `${appIdentifier} ` : '') + baseUserAgent;\n}\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=instrument.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildFullPath = require('../core/buildFullPath');\nvar buildURL = require('./../helpers/buildURL');\nvar http = require('http');\nvar https = require('https');\nvar httpFollow = require('follow-redirects').http;\nvar httpsFollow = require('follow-redirects').https;\nvar url = require('url');\nvar zlib = require('zlib');\nvar pkg = require('./../../package.json');\nvar createError = require('../core/createError');\nvar enhanceError = require('../core/enhanceError');\n\nvar isHttps = /https:?/;\n\n/**\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} proxy\n * @param {string} location\n */\nfunction setProxy(options, proxy, location) {\n options.hostname = proxy.host;\n options.host = proxy.host;\n options.port = proxy.port;\n options.path = location;\n\n // Basic proxy authorization\n if (proxy.auth) {\n var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n // If a proxy is used, any redirects must also pass through the proxy\n options.beforeRedirect = function beforeRedirect(redirection) {\n redirection.headers.host = redirection.host;\n setProxy(redirection, proxy, redirection.href);\n };\n}\n\n/*eslint consistent-return:0*/\nmodule.exports = function httpAdapter(config) {\n return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {\n var resolve = function resolve(value) {\n resolvePromise(value);\n };\n var reject = function reject(value) {\n rejectPromise(value);\n };\n var data = config.data;\n var headers = config.headers;\n\n // Set User-Agent (required by some servers)\n // Only set header if it hasn't been set in config\n // See https://github.com/axios/axios/issues/69\n if (!headers['User-Agent'] && !headers['user-agent']) {\n headers['User-Agent'] = 'axios/' + pkg.version;\n }\n\n if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(createError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers['Content-Length'] = data.length;\n }\n\n // HTTP basic authentication\n var auth = undefined;\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n // Parse url\n var fullPath = buildFullPath(config.baseURL, config.url);\n var parsed = url.parse(fullPath);\n var protocol = parsed.protocol || 'http:';\n\n if (!auth && parsed.auth) {\n var urlAuth = parsed.auth.split(':');\n var urlUsername = urlAuth[0] || '';\n var urlPassword = urlAuth[1] || '';\n auth = urlUsername + ':' + urlPassword;\n }\n\n if (auth) {\n delete headers.Authorization;\n }\n\n var isHttpsRequest = isHttps.test(protocol);\n var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n\n var options = {\n path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\\?/, ''),\n method: config.method.toUpperCase(),\n headers: headers,\n agent: agent,\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth: auth\n };\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n }\n\n var proxy = config.proxy;\n if (!proxy && proxy !== false) {\n var proxyEnv = protocol.slice(0, -1) + '_proxy';\n var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];\n if (proxyUrl) {\n var parsedProxyUrl = url.parse(proxyUrl);\n var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY;\n var shouldProxy = true;\n\n if (noProxyEnv) {\n var noProxy = noProxyEnv.split(',').map(function trim(s) {\n return s.trim();\n });\n\n shouldProxy = !noProxy.some(function proxyMatch(proxyElement) {\n if (!proxyElement) {\n return false;\n }\n if (proxyElement === '*') {\n return true;\n }\n if (proxyElement[0] === '.' &&\n parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) {\n return true;\n }\n\n return parsed.hostname === proxyElement;\n });\n }\n\n if (shouldProxy) {\n proxy = {\n host: parsedProxyUrl.hostname,\n port: parsedProxyUrl.port,\n protocol: parsedProxyUrl.protocol\n };\n\n if (parsedProxyUrl.auth) {\n var proxyUrlAuth = parsedProxyUrl.auth.split(':');\n proxy.auth = {\n username: proxyUrlAuth[0],\n password: proxyUrlAuth[1]\n };\n }\n }\n }\n }\n\n if (proxy) {\n options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : '');\n setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n var transport;\n var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true);\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsProxy ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n transport = isHttpsProxy ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n }\n\n // Create the request\n var req = transport.request(options, function handleResponse(res) {\n if (req.aborted) return;\n\n // uncompress the response body transparently if required\n var stream = res;\n\n // return the last request in case of redirects\n var lastRequest = res.req || req;\n\n\n // if no content, is HEAD request or decompress disabled we should not decompress\n if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) {\n switch (res.headers['content-encoding']) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'compress':\n case 'deflate':\n // add the unzipper to the body stream processing pipeline\n stream = stream.pipe(zlib.createUnzip());\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n }\n }\n\n var response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: res.headers,\n config: config,\n request: lastRequest\n };\n\n if (config.responseType === 'stream') {\n response.data = stream;\n settle(resolve, reject, response);\n } else {\n var responseBuffer = [];\n stream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) {\n stream.destroy();\n reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n config, null, lastRequest));\n }\n });\n\n stream.on('error', function handleStreamError(err) {\n if (req.aborted) return;\n reject(enhanceError(err, config, null, lastRequest));\n });\n\n stream.on('end', function handleStreamEnd() {\n var responseData = Buffer.concat(responseBuffer);\n if (config.responseType !== 'arraybuffer') {\n responseData = responseData.toString(config.responseEncoding);\n if (!config.responseEncoding || config.responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n\n response.data = responseData;\n settle(resolve, reject, response);\n });\n }\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return;\n reject(enhanceError(err, config, null, req));\n });\n\n // Handle request timeout\n if (config.timeout) {\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devoring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(config.timeout, function handleRequestTimeout() {\n req.abort();\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));\n });\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (req.aborted) return;\n\n req.abort();\n reject(cancel);\n });\n }\n\n // Send the request\n if (utils.isStream(data)) {\n data.on('error', function handleStreamError(err) {\n reject(enhanceError(err, config, null, req));\n }).pipe(req);\n } else {\n req.end(data);\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Create handlers that pass events from native requests\nvar eventHandlers = Object.create(null);\n[\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"].forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\"\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!(typeof data === \"string\" || typeof data === \"object\" && (\"length\" in data))) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (typeof data === \"function\") {\n callback = data;\n data = encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n if (callback) {\n this.once(\"timeout\", callback);\n }\n\n if (this.socket) {\n startTimer(this, msecs);\n }\n else {\n var self = this;\n this._currentRequest.once(\"socket\", function () {\n startTimer(self, msecs);\n });\n }\n\n this.once(\"response\", clearTimer);\n this.once(\"error\", clearTimer);\n\n return this;\n};\n\nfunction startTimer(request, msecs) {\n clearTimeout(request._timeout);\n request._timeout = setTimeout(function () {\n request.emit(\"timeout\");\n }, msecs);\n}\n\nfunction clearTimer() {\n clearTimeout(this._timeout);\n}\n\n// Proxy all other public ClientRequest methods\n[\n \"abort\", \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.substr(0, protocol.length - 1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n this._currentUrl = url.format(this._options);\n\n // Set up event handlers\n request._redirectable = this;\n for (var event in eventHandlers) {\n /* istanbul ignore else */\n if (event) {\n request.on(event, eventHandlers[event]);\n }\n }\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end.\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n var location = response.headers.location;\n if (location && this._options.followRedirects !== false &&\n statusCode >= 300 && statusCode < 400) {\n // Abort the current request\n this._currentRequest.removeAllListeners();\n this._currentRequest.on(\"error\", noop);\n this._currentRequest.abort();\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n this.emit(\"error\", new TooManyRedirectsError());\n return;\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var previousHostName = removeMatchingHeaders(/^host$/i, this._options.headers) ||\n url.parse(this._currentUrl).hostname;\n\n // Create the redirected request\n var redirectUrl = url.resolve(this._currentUrl, location);\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\n\n // Drop the Authorization header if redirecting to another host\n if (redirectUrlParts.hostname !== previousHostName) {\n removeMatchingHeaders(/^authorization$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (typeof this._options.beforeRedirect === \"function\") {\n var responseDetails = { headers: response.headers };\n try {\n this._options.beforeRedirect.call(null, this._options, responseDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n var error = new RedirectionError(\"Redirected request failed: \" + cause.message);\n error.cause = cause;\n this.emit(\"error\", error);\n }\n }\n else {\n // The response is not a redirect; return it as-is\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n }\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters\n if (typeof input === \"string\") {\n var urlStr = input;\n try {\n input = urlToOptions(new URL(urlStr));\n }\n catch (err) {\n /* istanbul ignore next */\n input = url.parse(urlStr);\n }\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return lastValue;\n}\n\nfunction createErrorType(code, defaultMessage) {\n function CustomError(message) {\n Error.captureStackTrace(this, this.constructor);\n this.message = message || defaultMessage;\n }\n CustomError.prototype = new Error();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n CustomError.prototype.code = code;\n return CustomError;\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n 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(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass AttachmentDto extends SlackDto {\n constructor(params) {\n super();\n\n this.color = params.color;\n this.fallback = params.fallback;\n this.blocks = params.blocks;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Attachment extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.color = params.color;\n this.props.fallback = params.fallback;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the color of the border to the left of the block quote for the Attachment\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n color(string) {\n return this.set(string, props.color);\n }\n\n /**\n * Sets the plain text summary of the attachment used in clients that don't show formatted text (eg. IRC, mobile notifications).\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n fallback(string) {\n return this.set(string, props.fallback);\n }\n\n /**\n * Adds Blocks to the Attachment object\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {...Block|Array} blocks Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n blocks(...blocks) {\n return this.append(blocks.flat(), props.blocks);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n };\n\n return this.getResult(AttachmentDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Attachment,\n AttachmentDto,\n};\n","const { Builder } = require('../../utility/lib');\nconst { categories } = require('../../utility/constants');\n\nclass Bit extends Builder {\n constructor() {\n super();\n\n this.category = categories.bit;\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\n\nmodule.exports = Bit;\n","const Bit = require('./bit');\n\nmodule.exports = {\n Bit,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props, enumValues } = require('../utility/constants');\n\nclass ConfirmationDialogDto extends SlackDto {\n constructor(params) {\n super();\n\n this.title = params.title;\n this.text = params.text;\n this.confirm = params.confirm;\n this.deny = params.deny;\n this.style = params.style;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConfirmationDialog extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.title = params.title;\n this.props.text = params.text;\n this.props.confirm = params.confirm;\n this.props.deny = params.deny;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the title displayed in the confirmation dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * Sets the textual content of the confirmation dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 300 characters\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the copy for the button that confirms the action.\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 30 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n confirm(string) {\n return this.set(string, props.confirm);\n }\n\n /**\n * Sets the copy for the button that cancels the action.\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 30 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n deny(string) {\n return this.set(string, props.deny);\n }\n\n /**\n * Sets the 'style' parameter to 'primary', making the\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n primary() {\n return this.set(enumValues.primary, props.style);\n }\n\n /**\n * Sets 'style' parameter to 'danger'\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n danger() {\n return this.set(enumValues.danger, props.style);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getMarkdownObject(this.props.text),\n title: BuilderHelper.getPlainTextObject(this.props.title),\n confirm: BuilderHelper.getPlainTextObject(this.props.confirm),\n deny: BuilderHelper.getPlainTextObject(this.props.deny),\n };\n\n return this.getResult(ConfirmationDialogDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConfirmationDialogDto,\n ConfirmationDialog,\n};\n","const { ConfirmationDialog, ConfirmationDialogDto } = require('./confirmation-dialog');\nconst { Option, OptionDto } = require('./option');\nconst { OptionGroup, OptionGroupDto } = require('./option-group');\nconst { Attachment, AttachmentDto } = require('./attachment');\n\nconst BitDto = {\n ConfirmationDialogDto,\n OptionDto,\n OptionGroupDto,\n AttachmentDto,\n};\n\nconst getBits = (config) => {\n const getInstance = (Class, params) => new Class(params, config);\n\n return {\n\n /**\n * Creates and returns a ConfirmationDialog Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.title] Sets the title displayed in the confirmation dialog\n * @param {string} [params.text] Sets the textual content of the confirmation dialog\n * @param {string} [params.confirm] Sets the text for the button that confirms the action.\n * @param {string} [params.deny]Sets the text for the button that cancels the action.\n * @return {ConfirmationDialog} An instance of ConfirmationDialog\n */\n\n ConfirmationDialog: (params) => getInstance(ConfirmationDialog, params),\n\n /**\n * Creates and returns an Option Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.text] Sets the text displayed in the menu for the current Option\n * @param {string} [params.value] Sets the value passed to your app when this Option is clicked or submitted\n * @param {string} [params.description] Sets a description shown next to the Option in a RadioButton Element\n * @param {string} [params.url] Sets the URL to redirect the user to when this Option is clicked (in an OverflowMenu)\n * @return {Option} An instance of Option\n */\n\n Option: (params) => getInstance(Option, params),\n\n /**\n * Creates and returns an OptionGroup Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.label] Sets the label shown above the group of Options\n * @return {OptionGroup} An instance of OptionsGroup\n */\n\n OptionGroup: (params) => getInstance(OptionGroup, params),\n\n /**\n * Creates and returns an Attachment Bit that can be attached to Message objects\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.color] Sets the color of the block quote border\n * @return {Attachment} An instance of Attachment\n */\n\n Attachment: (params) => getInstance(Attachment, params),\n };\n};\n\nmodule.exports = {\n ConfirmationDialog,\n Option,\n OptionGroup,\n Attachment,\n BitDto,\n getBits,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass OptionGroupDto extends SlackDto {\n constructor(params) {\n super();\n\n this.label = params.label;\n this.options = params.options;\n\n this.pruneAndFreeze();\n }\n}\n\nclass OptionGroup extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.label = params.label;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the label shown above the group of Options\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n label(string) {\n return this.set(string, props.label);\n }\n\n /**\n * Sets the Options displayed in this OptionGroup\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n label: BuilderHelper.getPlainTextObject(this.props.label),\n options: BuilderHelper.getBuilderResults(this.props.options),\n };\n\n return this.getResult(OptionGroupDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n OptionGroup,\n OptionGroupDto,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass OptionDto extends SlackDto {\n constructor(params) {\n super();\n\n this.text = params.text;\n this.value = params.value;\n this.description = params.description;\n this.url = params.url;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Option extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.value = params.value;\n this.props.description = params.description;\n this.props.url = params.url;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text displayed in the menu for the current Option\n *\n * * **Required** ⚠\n * * Max 75 characters.\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the value passed to your app when this Option is clicked or submitted\n *\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n value(string) {\n return this.set(string, props.value);\n }\n\n /**\n * Sets a description shown next to the Option in a RadioButton Element\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n * * Only available for RadioButtons ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n description(string) {\n return this.set(string, props.description);\n }\n\n /**\n * Sets the URL to redirect the user to when this Option is clicked (in an OverflowMenu)\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n * * Only available for Options in an OverflowMenu ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n url(string) {\n return this.set(string, props.url);\n }\n\n /**\n * @private\n */\n\n build({ isMarkdown } = { isMarkdown: false }) {\n const augmentedProps = {\n text: isMarkdown\n ? BuilderHelper.getMarkdownObject(this.props.text)\n : BuilderHelper.getPlainTextObject(this.props.text),\n description: isMarkdown\n ? BuilderHelper.getMarkdownObject(this.props.description)\n : BuilderHelper.getPlainTextObject(this.props.description),\n };\n\n return this.getResult(OptionDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Option,\n OptionDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ActionsDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.actions;\n this.elements = params.elements;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Actions extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the interactive Elements of the Actions Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 5 Elements\n * * Supports Buttons, Selects, Overflows, and DatePickers\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#actions|View in Slack API Documentation}\n *\n * @param {...Element|Array} elements Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n elements(...elements) {\n return this.append(elements.flat(), props.elements);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n elements: BuilderHelper.getBuilderResults(this.props.elements),\n };\n\n return this.getResult(ActionsDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Actions,\n ActionsDto,\n};\n","const { Builder } = require('../../utility/lib');\nconst { props, categories } = require('../../utility/constants');\n\nclass Block extends Builder {\n constructor() {\n super();\n\n this.category = categories.block;\n }\n\n /**\n * Sets a string to be an identifier for the block, that\n * will be available in interaction payloads\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n * * Must be unique to the view\n * * If a Block changes, blockId property should change, too\n *\n * {@link https://api.slack.com/reference/block-kit/blocks|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n blockId(string) {\n return this.set(string, props.blockId);\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\nmodule.exports = Block;\n","const Block = require('./block');\n\nmodule.exports = {\n Block,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ContextDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.context;\n this.elements = params.elements;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Context extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the interactive Elements of the Context block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 10 Elements\n * * Supports strings and Image Elements\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#context|View in Slack API Documentation}\n *\n * @param {...(string|Img)|Array<(string|Img)>} elements Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n elements(...elements) {\n return this.append(elements.flat(), props.elements);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n elements: BuilderHelper.getElementsForContext(this.props.elements),\n };\n\n return this.getResult(ContextDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Context,\n ContextDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types } = require('../utility/constants');\n\nclass DividerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.divider;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Divider extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(DividerDto);\n }\n}\n\n/**\n * {@link https://api.slack.com/reference/block-kit/blocks#divider|View in Slack API Documentation}\n */\n\nmodule.exports = {\n Divider,\n DividerDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types, enumValues, props } = require('../utility/constants');\n\nclass FileDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.file;\n this.source = enumValues.remote;\n this.external_id = params.externalId;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass File extends Block {\n constructor(params = {}) {\n super();\n\n this.props.externalId = params.externalId;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Slack-provided ID for the external file\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#file|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n externalId(string) {\n return this.set(string, props.externalId);\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(FileDto);\n }\n}\n\nmodule.exports = {\n File,\n FileDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass HeaderDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.header;\n this.text = params.text;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Header extends Block {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text to be displayed in the Header Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 3000 characters\n * * Plain text only\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#header|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getPlainTextObject(this.props.text),\n };\n\n return this.getResult(HeaderDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Header,\n HeaderDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ImageDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.image;\n this.image_url = params.imageUrl;\n this.alt_text = params.altText;\n this.title = params.title;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Image extends Block {\n constructor(params = {}) {\n super();\n\n this.props.imageUrl = params.imageUrl;\n this.props.altText = params.altText;\n this.props.title = params.title;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the source URL to load the Image from\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n imageUrl(string) {\n return this.set(string, props.imageUrl);\n }\n\n /**\n * Sets the textual summary of the Image\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n altText(string) {\n return this.set(string, props.altText);\n }\n\n /**\n * Sets an optional title for the Image\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n title: BuilderHelper.getPlainTextObject(this.props.title),\n };\n\n return this.getResult(ImageDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Image,\n ImageDto,\n};\n","const { Actions, ActionsDto } = require('./actions');\nconst { Context, ContextDto } = require('./context');\nconst { Divider, DividerDto } = require('./divider');\nconst { File, FileDto } = require('./file');\nconst { Header, HeaderDto } = require('./header');\nconst { Image, ImageDto } = require('./image');\nconst { Input, InputDto } = require('./input');\nconst { Section, SectionDto } = require('./section');\n\nconst BlockDto = {\n ActionsDto,\n ContextDto,\n DividerDto,\n FileDto,\n HeaderDto,\n ImageDto,\n InputDto,\n SectionDto,\n};\n\nconst getBlocks = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns an Actions Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#actions|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Actions} An instance of Actions\n */\n\n Actions: (params) => getInstance(Actions, params),\n\n /**\n * Creates and returns a Context Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#context|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Context} An instance of Context\n */\n\n Context: (params) => getInstance(Context, params),\n\n /**\n * Creates and returns a Divider\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#divider|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Divider} An instance of Divider\n */\n\n Divider: (params) => getInstance(Divider, params),\n\n /**\n * Creates and returns a File Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#file|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters for File\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.externalId] Sets the Slack-provided ID for the external file\n * @return {File} An instance of File\n */\n\n File: (params) => getInstance(File, params),\n\n /**\n * Creates and returns a Header Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#header|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.text] Sets the text to be displayed in the Header Block\n * @return {Section} An instance of Header\n */\n\n Header: (params) => getInstance(Header, params),\n\n /**\n * Creates and returns an Image Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.imageUrl] Sets the source URL to load the Image from\n * @param {string} [params.altText] Sets the textual summary of the Image\n * @param {string} [params.title] Sets an optional title for the Image\n * @return {Image} An instance of Image\n */\n\n Image: (params) => getInstance(Image, params),\n\n /**\n * Creates and returns an Input Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.label] Sets a label to be displayed for the Input Block\n * @param {string} [params.hint] Sets the hint to be displayed under the Input.\n * @return {Input} An instance of Input\n */\n\n Input: (params) => getInstance(Input, params),\n\n /**\n * Creates and returns a Section Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.text] Sets the text to be displayed in the Section Block\n * @return {Section} An instance of Section\n */\n\n Section: (params) => getInstance(Section, params),\n };\n};\n\nmodule.exports = {\n Actions,\n Context,\n Divider,\n File,\n Header,\n Image,\n Input,\n Section,\n BlockDto,\n getBlocks,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass InputDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.input;\n this.label = params.label;\n this.element = params.element;\n this.dispatch_action = params.dispatchAction;\n this.block_id = params.blockId;\n this.hint = params.hint;\n this.optional = params.optional;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Input extends Block {\n constructor(params = {}) {\n super();\n\n this.props.label = params.label;\n this.props.blockId = params.blockId;\n this.props.hint = params.hint;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets a label to be displayed for the Input Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n label(string) {\n return this.set(string, props.label);\n }\n\n /**\n * Sets the interactive Element of the Input Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 1 Element\n * * Supports TextInput, SelectMenus, MultiSelectMenus, and DatePickers\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {Element} element\n * @return {this} The instance on which the method is called\n */\n\n element(element) {\n return this.set(element, props.element);\n }\n\n /**\n * Sets the hint to be displayed under the Input.\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n hint(string) {\n return this.set(string, props.hint);\n }\n\n /**\n * Sets the 'optional' parameter to true, allowing the user to submit\n * the form without inputting a value into the Input Element\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n optional() {\n return this.set(true, props.optional);\n }\n\n /**\n * Sets the 'dispatch_action' parameter to true, meaning an actions\n * payload is sent upon interaction.\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchAction() {\n return this.set(true, props.dispatchAction);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n label: BuilderHelper.getPlainTextObject(this.props.label),\n hint: BuilderHelper.getPlainTextObject(this.props.hint),\n element: BuilderHelper.getBuilderResult(this.props.element),\n };\n\n return this.getResult(InputDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Input,\n InputDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass SectionDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.section;\n this.text = params.text;\n this.block_id = params.blockId;\n this.fields = params.fields;\n this.accessory = params.accessory;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Section extends Block {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text to be displayed in the Section Block\n *\n * **Slack Validation Rules:**\n * * **Required if property fields undefined** ⚠\n * * Max 3000 characters\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets text fields in two columns, side-by-side\n *\n * **Slack Validation Rules:**\n * * **Required if property text undefined** ⚠\n * * Max 10 items\n * * Max 2000 characters for each field\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {...string|Array} fields Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n fields(...fields) {\n return this.append(fields.flat(), props.fields);\n }\n\n /**\n * Sets an interactive Element to be attached to the Section Block\n *\n * **Slack Validation Rules:**\n * * Max 1 item\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {Element} element\n * @return {this} The instance on which the method is called\n */\n\n accessory(element) {\n return this.set(element, props.accessory);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getMarkdownObject(this.props.text),\n fields: BuilderHelper.getFields(this.props.fields),\n accessory: BuilderHelper.getBuilderResult(this.props.accessory),\n };\n\n return this.getResult(SectionDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Section,\n SectionDto,\n};\n","const Element = require('./element');\nconst { props } = require('../../utility/constants');\n\n/**\n * @class Make new Button\n * @abstract\n * @extends Element\n */\n\nclass ActionElement extends Element {\n /**\n * Sets a string to be an identifier for the source of\n * an action in interaction payloads\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Must be unique to view\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n actionId(string) {\n return this.set(string, props.actionId);\n }\n}\n\nmodule.exports = ActionElement;\n","const ActionElement = require('./action-element');\nconst { props } = require('../../utility/constants');\n\nclass ConfirmableElement extends ActionElement {\n /**\n * Adds a ConfirmationDialog to be shown upon interacting with\n * the current element or submitting the view\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {ConfirmationDialog} obj\n * @return {this} The instance on which the method is called\n */\n\n confirm(obj) {\n return this.set(obj, props.confirm);\n }\n}\n\nmodule.exports = ConfirmableElement;\n","const { Builder } = require('../../utility/lib');\nconst { categories } = require('../../utility/constants');\n\nclass Element extends Builder {\n constructor() {\n super();\n\n this.category = categories.element;\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\n\nmodule.exports = Element;\n","const Element = require('./element');\nconst ActionElement = require('./action-element');\nconst ConfirmableElement = require('./confirmable-element');\nconst SelectableElement = require('./selectable-element');\nconst SelectElement = require('./select-element');\nconst MultiSelectElement = require('./multiselect-element');\n\nmodule.exports = {\n Element,\n ActionElement,\n ConfirmableElement,\n SelectableElement,\n SelectElement,\n MultiSelectElement,\n};\n","const SelectElement = require('./select-element');\nconst { props } = require('../../utility/constants');\n\nclass MultiSelectElement extends SelectElement {\n /**\n * Sets a limit to how many items the user can select in any one MultiSelect\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#multi_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n maxSelectedItems(int) {\n return this.set(int, props.maxSelectedItems);\n }\n}\n\nmodule.exports = MultiSelectElement;\n","const ConfirmableElement = require('./confirmable-element');\nconst { props } = require('../../utility/constants');\n\nclass SelectElement extends ConfirmableElement {\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#select|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n}\n\nmodule.exports = SelectElement;\n","const ConfirmableElement = require('./confirmable-element');\nconst { props } = require('../../utility/constants');\n\nclass SelectableElement extends ConfirmableElement {\n /**\n * Sets the Options for the current Element\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n}\n\nmodule.exports = SelectableElement;\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, enumValues, props } = require('../utility/constants');\n\n\nclass ButtonDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.button;\n this.text = params.text;\n this.action_id = params.actionId;\n this.url = params.url;\n this.value = params.value;\n this.style = params.style;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\n\nclass Button extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.actionId = params.actionId;\n this.props.url = params.url;\n this.props.value = params.value;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the display text for the Button\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the URL to redirect the user to when this Button is clicked\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n url(string) {\n return this.set(string, props.url);\n }\n\n /**\n * Sets the value to be passed to your app when this Button is clicked\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n value(string) {\n return this.set(string, props.value);\n }\n\n /**\n * Sets the style property to 'primary,' making the Button green\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n primary() {\n return this.set(enumValues.primary, props.style);\n }\n\n /**\n * Sets the style property to 'danger,' making the Button red\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n danger() {\n return this.set(enumValues.danger, props.style);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n text: BuilderHelper.getPlainTextObject(this.props.text),\n };\n\n return this.getResult(ButtonDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Button,\n ButtonDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ChannelMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.channels;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_channels = params.initialChannels;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ChannelMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialChannels(...strings) {\n return this.append(strings.flat(), props.initialChannels);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ChannelMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ChannelMultiSelect,\n ChannelMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ChannelSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.channels;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_channel = params.initialChannel;\n this.confirm = params.confirm;\n this.response_url_enabled = params.responseUrlEnabled;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ChannelSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialChannel = params.initialChannel;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @param {string} string Channel ID\n * @return {this} The instance on which the method is called\n */\n\n initialChannel(string) {\n return this.set(string, props.initialChannel);\n }\n\n /**\n * Sets option to true, allowing a response URL to be provided at submission\n *\n * **Slack Validation Rules:**\n * * Only available in modals with Inputs ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n responseUrlEnabled() {\n return this.set(true, props.responseUrlEnabled);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ChannelSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ChannelSelect,\n ChannelSelectDto,\n};\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass CheckboxesDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.checkbox;\n this.action_id = params.actionId;\n this.options = params.options;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Checkboxes extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#checkboxes|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options, { isMarkdown: true }),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions, { isMarkdown: true }),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(CheckboxesDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Checkboxes,\n CheckboxesDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ConversationMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.conversations;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_conversations = params.initialConversations;\n this.default_to_current_conversation = params.defaultToCurrentConversation;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n this.filter = params.filter;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConversationMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialConversations(...strings) {\n return this.append(strings.flat(), props.initialConversations);\n }\n\n /**\n * Sets default selected conversation to the one currently open for the user\n *\n * **Slack Validation Rules:**\n * * If initial conversations provided, this option is ignored\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n defaultToCurrentConversation() {\n return this.set(true, props.defaultToCurrentConversation);\n }\n\n /**\n * Defines which conversations should be included in the list. Possible\n * enumValues are *im*, *impm*, *private*, and *public*\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} filters Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n filter(...filters) {\n return this.append(filters.flat(), props.filter);\n }\n\n /**\n * Excludes external shared conversations from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeExternalSharedChannels() {\n return this.set(true, props.excludeExternalSharedChannels);\n }\n\n /**\n * Excludes conversations with bot users from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeBotUsers() {\n return this.set(true, props.excludeBotUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n filter: BuilderHelper.getFilter(this.props),\n };\n\n return this.getResult(ConversationMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConversationMultiSelect,\n ConversationMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ConversationSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.conversations;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_conversation = params.initialConversation;\n this.default_to_current_conversation = params.defaultToCurrentConversation;\n this.confirm = params.confirm;\n this.response_url_enabled = params.responseUrlEnabled;\n this.filter = params.filter;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConversationSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialConversation = params.initialConversation;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialConversation(string) {\n return this.set(string, props.initialConversation);\n }\n\n /**\n * Sets default selected conversation to the one currently open for the user\n *\n * **Slack Validation Rules:**\n * * If initial conversations provided, this option is ignored\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n defaultToCurrentConversation() {\n return this.set(true, props.defaultToCurrentConversation);\n }\n\n /**\n * Sets option to true, allowing a response URL to be provided at submission\n *\n * **Slack Validation Rules:**\n * * Only available in modals with Inputs ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n responseUrlEnabled() {\n return this.set(true, props.responseUrlEnabled);\n }\n\n /**\n * Defines which conversations should be included in the list. Possible\n * enumValues are *im*, *impm*, *private*, and *public*\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {...string|Array} filters Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n filter(...filters) {\n return this.append(filters.flat(), props.filter);\n }\n\n /**\n * Excludes external shared conversations from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeExternalSharedChannels() {\n return this.set(true, props.excludeExternalSharedChannels);\n }\n\n /**\n * Excludes conversations with bot users from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeBotUsers() {\n return this.set(true, props.excludeBotUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n filter: BuilderHelper.getFilter(this.props),\n };\n\n return this.getResult(ConversationSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConversationSelect,\n ConversationSelectDto,\n};\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass DatePickerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.datepicker;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_date = params.initialDate;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass DatePicker extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialDate = params.initialDate;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default selected date in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {Date} date\n * @return {this} The instance on which the method is called\n */\n\n initialDate(date) {\n return this.set(date, props.initialDate);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialDate: BuilderHelper.getFormattedDate(this.props.initialDate),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(DatePickerDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n DatePicker,\n DatePickerDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ExternalMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.external;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.min_query_length = params.minQueryLength;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ExternalMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.minQueryLength = params.minQueryLength;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets a minimum number of characters types before querying your options URL\n *\n * **Slack Validation Rules:**\n * * If not set, request will be sent on every character change\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minQueryLength(int) {\n return this.set(int, props.minQueryLength);\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ExternalMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ExternalMultiSelect,\n ExternalMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ExternalSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.external;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_option = params.initialOption;\n this.min_query_length = params.minQueryLength;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ExternalSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.minQueryLength = params.minQueryLength;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * **Slack Validation Rules:**\n * * Must be exact match to one of the Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * Sets a minimum number of characters types before querying your options URL\n *\n * **Slack Validation Rules:**\n * * If not set, request will be sent on every character change\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minQueryLength(int) {\n return this.set(int, props.minQueryLength);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialOption: BuilderHelper.getOption(this.props.initialOption),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ExternalSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ExternalSelect,\n ExternalSelectDto,\n};\n","const { Element } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types, props } = require('../utility/constants');\n\nclass ImgDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.image;\n this.image_url = params.imageUrl;\n this.alt_text = params.altText;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Img extends Element {\n constructor(params = {}) {\n super();\n\n this.props.imageUrl = params.imageUrl;\n this.props.altText = params.altText;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the source URL to load the Img from\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n imageUrl(string) {\n return this.set(string, props.imageUrl);\n }\n\n /**\n * Sets the textual summary of the Img\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n altText(string) {\n return this.set(string, props.altText);\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(ImgDto);\n }\n}\n\nmodule.exports = {\n Img,\n ImgDto,\n};\n","const { Button, ButtonDto } = require('./button');\nconst { ChannelMultiSelect, ChannelMultiSelectDto } = require('./channel-multiselect');\nconst { ChannelSelect, ChannelSelectDto } = require('./channel-select');\nconst { Checkboxes, CheckboxesDto } = require('./checkboxes');\nconst { ConversationMultiSelect, ConversationMultiSelectDto } = require('./conversations-multiselect');\nconst { ConversationSelect, ConversationSelectDto } = require('./conversations-select');\nconst { DatePicker, DatePickerDto } = require('./datepicker');\nconst { ExternalMultiSelect, ExternalMultiSelectDto } = require('./external-multiselect');\nconst { ExternalSelect, ExternalSelectDto } = require('./external-select');\nconst { Img, ImgDto } = require('./img');\nconst { TextInput, TextInputDto } = require('./text-input');\nconst { OverflowMenu, OverflowMenuDto } = require('./overflow-menu');\nconst { RadioButtons, RadioButtonsDto } = require('./radio-buttons');\nconst { StaticSelect, StaticSelectDto } = require('./static-select');\nconst { StaticMultiSelect, StaticMultiSelectDto } = require('./static-multiselect');\nconst { TimePicker, TimePickerDto } = require('./time-picker');\nconst { UserMultiSelect, UserMultiSelectDto } = require('./user-multiselect');\nconst { UserSelect, UserSelectDto } = require('./user-select');\n\nconst ElementDto = {\n ButtonDto,\n ChannelMultiSelectDto,\n ChannelSelectDto,\n CheckboxesDto,\n ConversationMultiSelectDto,\n ConversationSelectDto,\n DatePickerDto,\n ExternalMultiSelectDto,\n ExternalSelectDto,\n ImgDto,\n TextInputDto,\n OverflowMenuDto,\n RadioButtonsDto,\n StaticMultiSelectDto,\n StaticSelectDto,\n TimePickerDto,\n UserMultiSelectDto,\n UserSelectDto,\n};\n\nconst getElements = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns a Button Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.text] Sets the display text for the Button\n * @param {string} [params.url] Sets the URL to redirect the user to when this Button is clicked\n * @param {string} [params.value] Sets the value to be passed to your app when this Button is clicked\n * @return {Button} An instance of Button\n */\n\n Button: (params) => getInstance(Button, params),\n\n /**\n * Creates and returns a ChannelMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {ChannelMultiSelect} An instance of ChannelMultiSelect\n */\n\n ChannelMultiSelect: (params) => getInstance(ChannelMultiSelect, params),\n\n /**\n * Creates and returns a ChannelSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialChannel] Sets the default selected item in the menu\n * @return {ChannelSelect} An instance of ChannelSelect\n */\n\n ChannelSelect: (params) => getInstance(ChannelSelect, params),\n\n /**\n * Creates and returns a Checkboxes Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#checkboxes|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {Checkboxes} An instance of Checkboxes\n */\n\n Checkboxes: (params) => getInstance(Checkboxes, params),\n\n /**\n * Creates and returns a ConversationMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {ConversationMultiSelect} An instance of ConversationMultiSelect\n */\n\n ConversationMultiSelect: (params) => getInstance(ConversationMultiSelect, params),\n\n /**\n * Creates and returns a ConversationSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialConversation] Sets the default selected item in the menu\n * @return {ConversationSelect} An instance of ConversationSelect\n */\n\n ConversationSelect: (params) => getInstance(ConversationSelect, params),\n\n /**\n * Creates and returns a DatePicker Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialDate] Sets the default selected date in the menu\n * @return {DatePicker} An instance of DatePicker\n */\n\n DatePicker: (params) => getInstance(DatePicker, params),\n\n /**\n * Creates and returns a ExternalMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @param {int} [params.minQueryLength] Sets a minimum number of characters types before querying your options URL\n * @return {ExternalMultiSelect} An instance of ExternalMultiSelect\n */\n\n ExternalMultiSelect: (params) => getInstance(ExternalMultiSelect, params),\n\n /**\n * Creates and returns a ExternalSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.minQueryLength] Sets a minimum number of characters types before querying your options URL\n * @return {ExternalSelect} An instance of ExternalSelect\n */\n\n ExternalSelect: (params) => getInstance(ExternalSelect, params),\n\n /**\n * Creates and returns an Img Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.imageUrl] Sets the source URL to load the Img from\n * @param {string} [params.altText] Sets the textual summary of the Img\n * @return {Img} An instance of Img\n */\n\n Img: (params) => getInstance(Img, params),\n\n /**\n * Creates and returns an OverflowMenu Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#overflow|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {OverflowMenu} An instance of OverflowMenu\n */\n\n OverflowMenu: (params) => getInstance(OverflowMenu, params),\n\n /**\n * Creates and returns a RadioButtons Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#radio|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {RadioButtons} An instance of RadioButtons\n */\n\n RadioButtons: (params) => getInstance(RadioButtons, params),\n\n /**\n * Creates and returns a StaticMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {StaticMultiSelect} An instance of StaticMultiSelect\n */\n\n StaticMultiSelect: (params) => getInstance(StaticMultiSelect, params),\n\n /**\n * Creates and returns a StaticSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @return {StaticSelect} An instance of StaticSelect\n */\n\n StaticSelect: (params) => getInstance(StaticSelect, params),\n\n /**\n * Creates and returns a TextInput Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialValue] Sets the default text entered into the TextInput at modal load\n * @param {int} [params.minLength] Sets a minimum character count in order for the user to submit the form\n * @param {int} [params.maxLength] Sets a maximum character count allowed to send the form\n * @return {TextInput} An instance of Input\n */\n\n TextInput: (params) => getInstance(TextInput, params),\n\n /**\n * Creates and returns a TimePicker Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialTime] Sets the default selected time in the menu\n * @return {TimePicker} An instance of TimePicker\n */\n\n TimePicker: (params) => getInstance(TimePicker, params),\n\n /**\n * Creates and returns a UserMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {UserMultiSelect} An instance of UserMultiSelect\n */\n\n UserMultiSelect: (params) => getInstance(UserMultiSelect, params),\n\n /**\n * Creates and returns a UserSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialUser]\n * @return {UserSelect} An instance of UserSelect\n */\n\n UserSelect: (params) => getInstance(UserSelect, params),\n };\n};\n\nmodule.exports = {\n Button,\n ChannelMultiSelect,\n ChannelSelect,\n Checkboxes,\n ConversationMultiSelect,\n ConversationSelect,\n DatePicker,\n ExternalMultiSelect,\n ExternalSelect,\n Img,\n TextInput,\n OverflowMenu,\n RadioButtons,\n StaticMultiSelect,\n StaticSelect,\n TimePicker,\n UserMultiSelect,\n UserSelect,\n ElementDto,\n getElements,\n};\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types } = require('../utility/constants');\n\nclass OverflowMenuDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.overflow;\n this.action_id = params.actionId;\n this.options = params.options;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass OverflowMenu extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(OverflowMenuDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n OverflowMenu,\n OverflowMenuDto,\n};\n\n/**\n * {@link https://api.slack.com/reference/block-kit/block-elements#overflow|View in Slack API Documentation}\n */\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass RadioButtonsDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.radiobutton;\n this.action_id = params.actionId;\n this.options = params.options;\n this.initial_option = params.initialOption;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass RadioButtons extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#radio|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options, { isMarkdown: true }),\n initialOption: BuilderHelper.getOption(this.props.initialOption, { isMarkdown: true }),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(RadioButtonsDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n RadioButtons,\n RadioButtonsDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass StaticMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.static;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.options = params.options;\n this.option_groups = params.optionGroups;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass StaticMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Options for the StaticMultiSelect\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Option[]} options\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * Sets the OptionGroup for the StaticMultiSelect, Options placed into\n * logical and named groups.\n *\n * **Slack Validation Rules:**\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...OptionGroup|OptionGroup[]} optionGroups\n * @return {this} The instance on which the method is called\n */\n\n optionGroups(...optionGroups) {\n return this.append(optionGroups.flat(), props.optionGroups);\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must have exact matches to the included Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Array } options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n options: BuilderHelper.getOptions(this.props.options),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions),\n optionGroups: BuilderHelper.getBuilderResults(this.props.optionGroups),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(StaticMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n StaticMultiSelect,\n StaticMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass StaticSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.static;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.options = params.options;\n this.option_groups = params.optionGroups;\n this.initial_option = params.initialOption;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass StaticSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Options for the StaticSelect\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {...Option|Array } options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * Sets the OptionGroup for the StaticSelect, Options placed into\n * logical and named groups.\n *\n * **Slack Validation Rules:**\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {...OptionGroup|Array} optionGroups Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n optionGroups(...optionGroups) {\n return this.append(optionGroups.flat(), props.optionGroups);\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n options: BuilderHelper.getOptions(this.props.options),\n optionGroups: BuilderHelper.getBuilderResults(this.props.optionGroups),\n initialOption: BuilderHelper.getOption(this.props.initialOption),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(StaticSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n StaticSelect,\n StaticSelectDto,\n};\n","const { ActionElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props, enumValues } = require('../utility/constants');\n\nclass TextInputDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.input;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_value = params.initialValue;\n this.multiline = params.multiline;\n this.min_length = params.minLength;\n this.max_length = params.maxLength;\n this.dispatch_action_config = params.dispatchActionConfig;\n\n this.pruneAndFreeze();\n }\n}\n\nclass TextInput extends ActionElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialValue = params.initialValue;\n this.props.minLength = params.minLength;\n this.props.maxLength = params.maxLength;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default text entered into the TextInput at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialValue(string) {\n return this.set(string, props.initialValue);\n }\n\n /**\n * Sets the Input to be multiline, as opposed to single line\n *\n * **Slack Validation Rules:**\n * * Defaults to false\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n multiline() {\n return this.set(true, props.multiline);\n }\n\n /**\n * Sets a minimum character count in order for the user to submit the form\n *\n * **Slack Validation Rules:**\n * * Maximum 3000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minLength(int) {\n return this.set(int, props.minLength);\n }\n\n /**\n * Sets a maximum character count allowed to send the form\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n maxLength(int) {\n return this.set(int, props.maxLength);\n }\n\n /**\n * Configures the text input to send an actions payload when Enter is pressed\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchActionOnEnterPressed() {\n return this.set(enumValues.onEnterPressed, props.onEnterPressed);\n }\n\n /**\n * Configures the text input to send an actions payload when a character is entered\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchActionOnCharacterEntered() {\n return this.set(enumValues.onCharacterEntered, props.onCharacterEntered);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n dispatchActionConfig: BuilderHelper.getDispatchActionsConfigurationObject(this.props),\n };\n\n return this.getResult(TextInputDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n TextInput,\n TextInputDto,\n};\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass TimePickerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.timepicker;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_time = params.initialTime;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass TimePicker extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialTime = params.initialTime;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default selected time in the menu\n *\n * **Slack Validation Rules:**\n * * Set in HH:mm format, where HH is 24-hour hour format and mm is minutes with a leading zero\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialTime(string) {\n return this.set(string, props.initialTime);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialDate: BuilderHelper.getFormattedDate(this.props.initialDate),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(TimePickerDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n TimePicker,\n TimePickerDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass UserMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.users;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_users = params.initialUsers;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass UserMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets users to display in the menu by default at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialUsers(...strings) {\n return this.append(strings.flat(), props.initialUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(UserMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n UserMultiSelect,\n UserMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass UserSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.users;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_user = params.initialUser;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass UserSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialUser = params.initialUser;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets user to display in the menu by default at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_select|View in Slack API Documentation}\n *\n * @param {string} string User IDs\n * @return {this} The instance on which the method is called\n */\n\n initialUser(string) {\n return this.set(string, props.initialUser);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(UserSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n UserSelect,\n UserSelectDto,\n};\n","const { getSurfaces } = require('./surfaces');\nconst { getBlocks } = require('./blocks');\nconst { getBits } = require('./bits');\nconst { getElements } = require('./elements');\n\nconst Bits = getBits();\nconst Blocks = getBlocks();\nconst Elements = getElements();\n\nmodule.exports = {\n ...getSurfaces(),\n Blocks,\n Elements,\n Bits,\n};\n","const ObjectBase = require('./object-base');\n\nmodule.exports = {\n ObjectBase,\n};\n","class ObjectBase {\n cleanAndFreeze() {\n Object.keys(this)\n .forEach((prop) => typeof this[prop] === 'undefined' && delete this[prop]);\n\n return Object.freeze(this);\n }\n}\n\nmodule.exports = ObjectBase;\n","const { ObjectBase } = require('./base');\n\nclass DispatchActionsConfigurationObject extends ObjectBase {\n constructor(params) {\n super();\n\n this.trigger_actions_on = params.triggerActionsOn;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = DispatchActionsConfigurationObject;\n","const { ObjectBase } = require('./base');\n\nclass FilterObject extends ObjectBase {\n constructor(params) {\n super();\n\n this.include = params.filter;\n this.exclude_external_shared_channels = params.excludeExternalSharedChannels;\n this.exclude_bot_users = params.excludeBotUsers;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = FilterObject;\n","const FilterObject = require('./filter-object');\nconst MarkdownObject = require('./markdown-object');\nconst PlainTextObject = require('./plain-text-object');\nconst DispatchActionsConfigurationObject = require('./dispatch-actions-configuration-object');\n\nmodule.exports = {\n FilterObject,\n MarkdownObject,\n PlainTextObject,\n DispatchActionsConfigurationObject,\n};\n","const { ObjectBase } = require('./base');\nconst { types } = require('../utility/constants');\n\nclass MarkdownObject extends ObjectBase {\n constructor(text) {\n super();\n\n this.type = types.objects.markdown;\n this.text = text;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = MarkdownObject;\n","const { ObjectBase } = require('./base');\nconst { types } = require('../utility/constants');\n\nclass PlainTextObject extends ObjectBase {\n constructor(text) {\n super();\n\n this.type = types.objects.text;\n this.text = text;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = PlainTextObject;\n","const Surface = require('./surface');\nconst { props } = require('../../utility/constants');\n\nclass AdvancedSurface extends Surface {\n /**\n * Sets a string sent back to your server together with all action and submission events.\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n privateMetaData(string) {\n return this.set(string, props.privateMetaData);\n }\n\n /**\n * Sets a string sent back to your server together with all action and submission events to\n * identify app actions for the current view.\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n callbackId(string) {\n return this.set(string, props.callbackId);\n }\n\n /**\n * Sets a custom identifier that must be unique for all views on a per-team basis\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n externalId(string) {\n return this.set(string, props.externalId);\n }\n\n /**\n * When called, builds the view and prints to the console the preview URL in\n * order to open and preview the view on the Slack Block Builder website\n */\n\n printPreviewUrl() {\n this.build();\n\n console.log(encodeURI(`https://app.slack.com/block-kit-builder/#${JSON.stringify(this.result)}`).replace(/[!'()*]/g, escape));\n }\n}\n\nmodule.exports = AdvancedSurface;\n","const Surface = require('./surface');\nconst AdvancedSurface = require('./advanced-surface');\n\nmodule.exports = {\n Surface,\n AdvancedSurface,\n};\n","const { Builder } = require('../../utility/lib');\nconst { props, categories } = require('../../utility/constants');\n\nclass Surface extends Builder {\n constructor() {\n super();\n\n this.category = categories.surface;\n }\n\n /**\n * Sets the Blocks of the Surface\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Blocks\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {...Block|Array} blocks Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n blocks(...blocks) {\n return this.append(blocks.flat(), props.blocks);\n }\n\n /**\n * Builds the view and returns it as a Slack API-compatible object.\n *\n * @return {Object} An object representation of the built UI\n */\n\n buildToObject() {\n this.build();\n\n return this.result;\n }\n\n /**\n * Builds the view and returns it as a Slack API-compatible JSON string.\n *\n * @return {String} A JSON string representation of the built UI\n */\n\n buildToJSON() {\n this.build();\n\n return JSON.stringify(this.result);\n }\n\n /**\n * Builds the view and returns a Slack API-compatible array of Blocks objects.\n *\n * {@link https://api.slack.com/block-kit|View in Slack API Documentation}\n *\n * @return {Array} Array of built Block objects\n */\n\n getBlocks() {\n this.build();\n\n return [...this.result.blocks];\n }\n\n /**\n * When called, builds the view and prints to the console the preview URL in\n * order to open and preview the view on the Slack Block Builder website\n */\n\n printPreviewUrl() {\n this.build();\n\n console.log(encodeURI(`https://app.slack.com/block-kit-builder/#${JSON.stringify({ blocks: this.result.blocks, attachments: this.result.attachments })}`).replace(/[!'()*]/g, escape));\n }\n}\n\nmodule.exports = Surface;\n","const { AdvancedSurface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types } = require('../utility/constants');\n\nclass HomeTabDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.surfaces.home;\n this.blocks = params.blocks;\n this.private_metadata = params.privateMetaData;\n this.callback_id = params.callbackId;\n this.external_id = params.externalId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass HomeTab extends AdvancedSurface {\n constructor(params = {}) {\n super();\n\n this.props.privateMetaData = params.privateMetaData;\n this.props.callbackId = params.callbackId;\n this.props.externalId = params.externalId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n };\n\n this.getResult(HomeTabDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n HomeTab,\n HomeTabDto,\n};\n\n/**\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n */\n","const { HomeTab, HomeTabDto } = require('./home-tab');\nconst { Message, MessageDto } = require('./message');\nconst { Modal, ModalDto } = require('./modal');\n\nconst SurfaceDto = {\n HomeTabDto,\n MessageDto,\n ModalDto,\n};\n\nconst getSurfaces = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns a HomeTab Surface\n *\n * {@link https://api.slack.com/surfaces/tabs|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.callbackId] Sets a string sent back to your server together with all action and submission events.\n * @param {string} [params.externalId] Sets a custom identifier that must be unique for all views on a per-team basis\n * @param {string} [params.privateMetaData] Sets a string sent back to your server together with all action and submission events.\n * @return {HomeTab} An instance of HomeTab\n */\n\n HomeTab: (params) => getInstance(HomeTab, params),\n\n /**\n * Creates and returns a Message Surface\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.channel] The Slack channel ID to which the message is to be sent\n * @param {string} [params.text] Text to be displayed in the notification on the Message, or in the body, if there are no Blocks available\n * @param {timestamp} [params.threadTs] Sets the message to be a reply in a thread to the message whose timestamp is passed\n * @param {timestamp} [params.postAt] Sets a time for the message to be posted, as a scheduled message\n * @return {Message} An instance of Message\n */\n\n Message: (params) => getInstance(Message, params),\n\n /**\n * Creates and returns a Modal Surface\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.title] Sets a title for your Modal\n * @param {string} [params.close] Sets the text for the close button\n * @param {string} [params.submit] Sets the text for the submit button\n * @param {string} [params.callbackId] Sets a string sent back to your server together with all action and submission events.\n * @param {string} [params.externalId] Sets a custom identifier that must be unique for all views on a per-team basis\n * @param {string} [params.privateMetaData] Sets a string sent back to your server together with all action and submission events.\n * @return {Modal} An instance of Modal\n */\n\n Modal: (params) => getInstance(Modal, params),\n };\n};\n\nmodule.exports = {\n HomeTab,\n Message,\n Modal,\n SurfaceDto,\n getSurfaces,\n};\n","const { Surface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props, enumValues } = require('../utility/constants');\n\nclass MessageDto extends SlackDto {\n constructor(params) {\n super();\n\n this.channel = params.channel;\n this.text = params.text;\n this.blocks = params.blocks;\n this.attachments = params.attachments;\n this.as_user = params.asUser;\n this.ts = params.ts;\n this.thread_ts = params.threadTs;\n this.replace_original = params.replaceOriginal;\n this.delete_original = params.deleteOriginal;\n this.response_type = params.responseType;\n this.post_at = params.postAt;\n this.mrkdwn = params.mrkdwn;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Message extends Surface {\n constructor(params = {}) {\n super();\n\n this.props.channel = params.channel;\n this.props.text = params.text;\n this.props.ts = params.ts;\n this.props.threadTs = params.threadTs;\n this.props.postAt = params.postAt;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Attachments of the Message object\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {...Attachment|Array} attachments Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n attachments(...attachments) {\n return this.append(attachments.flat(), props.attachments);\n }\n\n /**\n * The Slack channel ID to which the message is to be sent\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string Slack channel ID\n * @return {this} The instance on which the method is called\n */\n\n channel(string) {\n return this.set(string, props.channel);\n }\n\n /**\n * Text to be displayed in the notification on the Message, or\n * in the body, if there are no Blocks available\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string Slack channel ID\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the message to be sent as either the user whose oAuth token is being used,\n * or as a bot user\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n asUser() {\n return this.set(true, props.asUser);\n }\n\n /**\n * Sets the message to be a reply in a thread to the message whose timestamp is passed\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string The Slack-produced timestamp of message to be replied to\n * @return {this} The instance on which the method is called\n */\n\n threadTs(string) {\n return this.set(string, props.threadTs);\n }\n\n /**\n * Used to update a message. Sets the timestamp of the message to update.\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string The Slack-produced timestamp of message to be replaced\n * @return {this} The instance on which the method is called\n */\n\n ts(string) {\n return this.set(string, props.ts);\n }\n\n /**\n * Sets the message to be replace the original message from which the interaction was received\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n replaceOriginal() {\n return this.set(true, props.replaceOriginal);\n }\n\n /**\n * Sets the original message from which interaction was received to be deleted\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n deleteOriginal() {\n return this.set(true, props.deleteOriginal);\n }\n\n /**\n * Sets the message to only be visible by the user who invoked the action\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n ephemeral() {\n return this.set(enumValues.ephemeral, props.responseType);\n }\n\n /**\n * Sets the message to visible to everyone in the channel\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n inChannel() {\n return this.set(enumValues.inChannel, props.responseType);\n }\n\n /**\n * Sets a time for the message to be posted, as a scheduled message\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {timestamp} timestamp The timestamp of message to be replied to\n * @return {this} The instance on which the method is called\n */\n\n postAt(timestamp) {\n return this.set(timestamp, props.postAt);\n }\n\n /**\n * When set, the Slack API knows that markdown in the `text` property should be ignored.\n *\n * {@link https://api.slack.com/reference/messaging/payload|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n ignoreMarkdown() {\n return this.set(false, props.mrkdwn);\n }\n\n /**\n * Builds the view and returns a Slack API-compatible array of Attachment objects.\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @return {Array} Array of built Attachment objects\n */\n\n getAttachments() {\n this.build();\n\n return [...this.result.attachments];\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n attachments: BuilderHelper.getBuilderResults(this.props.attachments),\n };\n\n this.getResult(MessageDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n Message,\n MessageDto,\n};\n","const { AdvancedSurface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ModalDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.surfaces.modal;\n this.title = params.title;\n this.blocks = params.blocks;\n this.close = params.close;\n this.submit = params.submit;\n this.private_metadata = params.privateMetaData;\n this.callback_id = params.callbackId;\n this.clear_on_close = params.clearOnClose;\n this.notify_on_close = params.notifyOnClose;\n this.external_id = params.externalId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Modal extends AdvancedSurface {\n constructor(params = {}) {\n super();\n\n this.props.title = params.title;\n this.props.close = params.close;\n this.props.submit = params.submit;\n this.props.privateMetaData = params.privateMetaData;\n this.props.callbackId = params.callbackId;\n this.props.externalId = params.externalId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the title of the Modal dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * Sets the text displayed on the button that closes the Modal\n *\n * **Slack Validation Rules:**\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n close(string) {\n return this.set(string, props.close);\n }\n\n /**\n * Sets the text displayed on the button that submits the Modal\n *\n * **Slack Validation Rules:**\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n submit(string) {\n return this.set(string, props.submit);\n }\n\n /**\n * Configures the Modal to clear all open and pushed views in the Modal flow\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n clearOnClose() {\n return this.set(true, props.clearOnClose);\n }\n\n /**\n * Configures the Modal to send a notification to your server when closed\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n notifyOnClose() {\n return this.set(true, props.notifyOnClose);\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n title: BuilderHelper.getPlainTextObject(this.props.title),\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n close: BuilderHelper.getPlainTextObject(this.props.close),\n submit: BuilderHelper.getPlainTextObject(this.props.submit),\n };\n\n this.getResult(ModalDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n Modal,\n ModalDto,\n};\n","module.exports = {\n bit: 'Bit',\n element: 'Element',\n block: 'Block',\n surface: 'Surface',\n};\n","module.exports = {\n option: 'Option',\n optionGroup: 'OptionGroup',\n confirmationDialog: 'ConfirmationDialog',\n img: 'Img',\n attachment: 'Attachment',\n};\n","const types = require('./types');\nconst enumValues = require('./values');\nconst props = require('./props');\nconst categories = require('./categories');\nconst classes = require('./classes');\nconst paramMap = require('./param-map');\n\nmodule.exports = {\n types,\n enumValues,\n props,\n categories,\n classes,\n paramMap,\n};\n","module.exports = {\n actionId: 'action_id',\n blocks: 'blocks',\n blockId: 'block_id',\n maxSelectedItems: 'max_selected_items',\n title: 'title',\n text: 'text',\n confirm: 'confirm',\n deny: 'deny',\n style: 'style',\n danger: 'danger',\n label: 'label',\n options: 'options',\n value: 'value',\n description: 'description',\n url: 'url',\n elements: 'elements',\n externalId: 'external_id',\n imageUrl: 'image_url',\n altText: 'alt_text',\n element: 'element',\n hint: 'hint',\n optional: 'optional',\n fields: 'fields',\n accessory: 'accessory',\n initialChannels: 'initial_channels',\n initialChannel: 'initial_channel',\n responseUrlEnabled: 'response_url_enabled',\n initialOptions: 'initial_options',\n initialConversations: 'initial_conversations',\n defaultToCurrentConversation: 'default_to_current_conversation',\n filter: 'filter',\n excludeExternalSharedChannels: 'exclude_external_shared_channels',\n excludeBotUsers: 'exclude_bot_users',\n initialConversation: 'initial_conversation',\n initialDate: 'initial_date',\n minQueryLength: 'min_query_length',\n initialOption: 'initial_option',\n optionGroups: 'option_groups',\n placeholder: 'placeholder',\n initialValue: 'initial_value',\n multiline: 'multiline',\n minLength: 'min_length',\n maxLength: 'max_length',\n initialUsers: 'initial_users',\n initialUser: 'initial_user',\n channel: 'channel',\n close: 'close',\n submit: 'submit',\n clearOnClose: 'clear_on_close',\n notifyOnClose: 'notify_on_close',\n privateMetaData: 'private_metadata',\n callbackId: 'callback_id',\n asUser: 'as_user',\n ts: 'ts',\n threadTs: 'thread_ts',\n replaceOriginal: 'replace_original',\n deleteOriginal: 'delete_original',\n responseType: 'response_type',\n postAt: 'post_at',\n color: 'color',\n fallback: 'fallback',\n attachments: 'attachments',\n dispatchAction: 'dispatch_action',\n dispatchActionConfig: 'dispatch_action_config',\n initialTime: 'initial_time',\n mrkdwn: 'mrkdwn',\n};\n","module.exports = {\n blocks: 'blocks',\n elements: 'elements',\n blockId: 'blockId',\n externalId: 'externalId',\n label: 'label',\n element: 'element',\n hint: 'hint',\n optional: 'optional',\n fields: 'fields',\n accessory: 'accessory',\n actionId: 'actionId',\n url: 'url',\n style: 'style',\n value: 'value',\n option: 'option',\n confirm: 'confirm',\n imageUrl: 'imageUrl',\n altText: 'altText',\n options: 'options',\n initialOptions: 'initialOptions',\n initialOption: 'initialOption',\n placeholder: 'placeholder',\n initialDate: 'initialDate',\n initialValue: 'initialValue',\n multiline: 'multiline',\n minLength: 'minLength',\n maxLength: 'maxLength',\n initialChannel: 'initialChannel',\n initialChannels: 'initialChannels',\n initialConversation: 'initialConversation',\n initialConversations: 'initialConversations',\n responseUrlEnabled: 'responseUrlEnabled',\n defaultToCurrentConversation: 'defaultToCurrentConversation',\n filter: 'filter',\n minQueryLength: 'minQueryLength',\n optionGroups: 'optionGroups',\n initialUser: 'initialUser',\n initialUsers: 'initialUsers',\n maxSelectedItems: 'maxSelectedItems',\n title: 'title',\n submit: 'submit',\n close: 'close',\n deny: 'deny',\n excludeExternalSharedChannels: 'excludeExternalSharedChannels',\n excludeBotUsers: 'excludeBotUsers',\n text: 'text',\n privateMetaData: 'privateMetaData',\n callbackId: 'callbackId',\n channel: 'channel',\n clearOnClose: 'clearOnClose',\n notifyOnClose: 'notifyOnClose',\n description: 'description',\n danger: 'danger',\n primary: 'primary',\n asUser: 'asUser',\n threadTs: 'threadTs',\n replaceOriginal: 'replaceOriginal',\n deleteOriginal: 'deleteOriginal',\n responseType: 'responseType',\n postAt: 'postAt',\n ephemeral: 'ephemeral',\n inChannel: 'inChannel',\n ts: 'ts',\n color: 'color',\n fallback: 'fallback',\n attachments: 'attachments',\n dispatchAction: 'dispatchAction',\n dispatchActionConfig: 'dispatchActionConfig',\n onEnterPressed: 'onEnterPressed',\n onCharacterEntered: 'onCharacterEntered',\n dispatchActionOnEnterPressed: 'dispatchActionOnEnterPressed',\n dispatchActionOnCharacterEntered: 'dispatchActionOnCharacterEntered',\n initialTime: 'initialTime',\n mrkdwn: 'mrkdwn',\n ignoreMarkdown: 'ignoreMarkdown',\n};\n","module.exports = {\n surfaces: {\n home: 'home',\n modal: 'modal',\n },\n blocks: {\n section: 'section',\n actions: 'actions',\n context: 'context',\n input: 'input',\n file: 'file',\n divider: 'divider',\n image: 'image',\n header: 'header',\n },\n elements: {\n button: 'button',\n checkbox: 'checkboxes',\n datepicker: 'datepicker',\n timepicker: 'timepicker',\n image: 'image',\n overflow: 'overflow',\n input: 'plain_text_input',\n radiobutton: 'radio_buttons',\n select: {\n static: 'static_select',\n external: 'external_select',\n users: 'users_select',\n conversations: 'conversations_select',\n channels: 'channels_select',\n },\n multiselect: {\n static: 'multi_static_select',\n external: 'multi_external_select',\n users: 'multi_users_select',\n conversations: 'multi_conversations_select',\n channels: 'multi_channels_select',\n },\n },\n objects: {\n text: 'plain_text',\n markdown: 'mrkdwn',\n },\n};\n","module.exports = {\n remote: 'remote',\n danger: 'danger',\n primary: 'primary',\n ephemeral: 'ephemeral',\n inChannel: 'in_channel',\n onEnterPressed: 'on_enter_pressed',\n onCharacterEntered: 'on_character_entered',\n};\n","class BlockBuilderError extends Error {\n constructor(message) {\n super(message);\n this.name = 'BlockBuilderError';\n }\n}\n\nmodule.exports = BlockBuilderError;\n","class BlockBuilderValidationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'BlockBuilderValidationError';\n }\n}\n\nmodule.exports = BlockBuilderValidationError;\n","const BlockBuilderError = require('./block-builder-error');\nconst BlockBuilderValidationError = require('./block-builder-validation-error');\n\nmodule.exports = {\n BlockBuilderValidationError,\n BlockBuilderError,\n};\n","const Objects = require('../../objects');\n\nclass BuilderHelper {\n static getOption(builder, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builder)) {\n return undefined;\n }\n\n if (!builder.hasBeenBuilt) {\n builder.build({ isMarkdown });\n }\n\n return builder.result;\n }\n\n static getOptions(builders, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builders)) {\n return undefined;\n }\n\n return builders.map((builder) => this.getBuilderResult(builder, { isMarkdown }));\n }\n\n static getBuilderResult(builder, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builder)) {\n return undefined;\n }\n\n if (!builder.hasBeenBuilt) {\n builder.build({ isMarkdown });\n }\n\n return builder.result;\n }\n\n static getBuilderResults(builders) {\n if (this.isUndefined(builders)) {\n return undefined;\n }\n\n return builders.map((builder) => this.getBuilderResult(builder));\n }\n\n static getPlainTextObject(string) {\n if (this.isUndefined(string)) {\n return undefined;\n }\n\n return new Objects.PlainTextObject(string);\n }\n\n static getMarkdownObject(string) {\n if (this.isUndefined(string)) {\n return undefined;\n }\n\n return new Objects.MarkdownObject(string);\n }\n\n static getElementsForContext(array) {\n if (this.isUndefined(array)) {\n return undefined;\n }\n\n return array.map((item) => (typeof item === 'string'\n ? this.getMarkdownObject(item)\n : item.build()));\n }\n\n static getFields(array) {\n if (this.isUndefined(array)) {\n return undefined;\n }\n\n return array.map((item) => this.getMarkdownObject(item));\n }\n\n\n static getFormattedDate(date) {\n if (this.isUndefined(date)) {\n return undefined;\n }\n\n return date.toISOString().split('T')[0];\n }\n\n static getFilter(props) {\n const { filter, excludeBotUsers, excludeExternalSharedChannels } = props;\n\n if (this.areUndefined(filter, excludeBotUsers, excludeExternalSharedChannels)) {\n return undefined;\n }\n\n return new Objects.FilterObject({ filter, excludeBotUsers, excludeExternalSharedChannels });\n }\n\n static getDispatchActionsConfigurationObject(props) {\n const { onEnterPressed, onCharacterEntered } = props;\n\n if (this.areUndefined(onEnterPressed, onCharacterEntered)) {\n return undefined;\n }\n\n return new Objects.DispatchActionsConfigurationObject({ triggerActionsOn: [onEnterPressed, onCharacterEntered].filter(Boolean) });\n }\n\n static isUndefined(value) {\n return typeof value === 'undefined';\n }\n\n static areUndefined(...values) {\n return values.filter((value) => this.isUndefined(value)).length === values.length;\n }\n}\n\nmodule.exports = BuilderHelper;\n","const BuilderHelper = require('./builder-helper');\nconst ValidationHelper = require('./validation-helper');\n\nmodule.exports = {\n BuilderHelper,\n ValidationHelper,\n};\n","const defaultTypeRules = require('../validators/default-type-rules');\n\nclass ValidationHelper {\n static getTypeValidator(prop) {\n return defaultTypeRules[prop];\n }\n}\n\nmodule.exports = ValidationHelper;\n","const { ValidationHelper } = require('../helpers');\nconst { BlockBuilderError, BlockBuilderValidationError } = require('../exception');\n\nclass Builder {\n constructor() {\n this.class = this.constructor.name;\n this.category = null;\n this.props = {};\n this.result = {};\n this.hasBeenBuilt = false;\n }\n\n /**\n * @protected\n */\n\n set(value, prop) {\n if (typeof this.props[prop] !== 'undefined') {\n throw new BlockBuilderError(`Property ${prop} for ${this.constructor.name} can only be assigned once.`);\n }\n\n this.validateProp(value, prop);\n\n this.props[prop] = value;\n\n return this;\n }\n\n /**\n * @protected\n */\n\n append(value, prop) {\n const prunedValue = value.filter(Boolean);\n\n if (prunedValue.length > 0) {\n this.validateProp(prunedValue, prop);\n\n this.props[prop] = typeof this.props[prop] === 'undefined'\n ? prunedValue\n : this.props[prop].concat(prunedValue);\n }\n\n return this;\n }\n\n /**\n * @protected\n */\n\n getResult(Class, augmentedProps) {\n this.validateState();\n\n this.result = new Class({ ...this.props, ...augmentedProps });\n this.hasBeenBuilt = true;\n\n Object.freeze(this);\n\n return this.result;\n }\n\n /**\n * @protected\n */\n\n finalizeConstruction() {\n Object.keys(this.props).map((prop) => this.validateProp(this.props[prop], prop));\n Object.keys(this.props).forEach((prop) => typeof this.props[prop] === 'undefined' && delete this.props[prop]);\n Object.seal(this);\n }\n\n /**\n * @private\n */\n\n validateProp(value, prop) {\n this.validateState();\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n const typeValidator = ValidationHelper.getTypeValidator(prop);\n const typeValidation = typeValidator.validate(value);\n\n if (typeValidation.failed) {\n throw new BlockBuilderValidationError(`Property '${prop}' of ${this.constructor.name} only accepts ${typeValidation.message}.`);\n }\n }\n\n /**\n * @private\n */\n\n validateState() {\n if (this.hasBeenBuilt) {\n throw new BlockBuilderError(`Builder for ${this.constructor.name} has been built and can no longer be modified.`);\n }\n }\n\n /**\n * Should not be called directly\n * @protected\n */\n\n build() {\n throw new BlockBuilderError(`Builder ${this.constructor.name} must have a declared 'build' method`);\n }\n}\n\nmodule.exports = Builder;\n","const Builder = require('./builder');\nconst SlackDto = require('./slack-dto');\nconst Validator = require('./validator');\n\nmodule.exports = {\n Builder,\n SlackDto,\n Validator,\n};\n","class SlackDto {\n /**\n * @protected\n */\n\n pruneAndFreeze() {\n Object.keys(this)\n .forEach((prop) => typeof this[prop] === 'undefined' && delete this[prop]);\n\n Object.freeze(this);\n }\n}\n\nmodule.exports = SlackDto;\n","class Validator {\n constructor({ condition, message }) {\n this.condition = condition;\n this.message = message;\n }\n\n validate(value) {\n return {\n failed: !this.condition(value),\n message: this.message,\n };\n }\n}\n\nmodule.exports = Validator;\n","const types = require('./type-validators');\n\nmodule.exports = {\n blocks: types.areBlocks,\n elements: types.areElementsOrStrings,\n blockId: types.isString,\n externalId: types.isString,\n label: types.isString,\n element: types.isElement,\n hint: types.isString,\n optional: types.isBool,\n fields: types.areStringsOrImages,\n accessory: types.isElement,\n actionId: types.isString,\n url: types.isString,\n style: types.isButtonStyleEnum,\n primary: types.isButtonStyleEnum,\n danger: types.isButtonStyleEnum,\n value: types.isString,\n option: types.isOption,\n confirm: types.isConfirmationDialogOrString,\n imageUrl: types.isString,\n altText: types.isString,\n options: types.areOptions,\n initialOptions: types.areOptions,\n initialOption: types.isOption,\n placeholder: types.isString,\n initialDate: types.isDate,\n initialValue: types.isString,\n multiline: types.isBool,\n minLength: types.isInt,\n maxLength: types.isInt,\n initialChannel: types.isString,\n initialChannels: types.areStrings,\n initialConversation: types.isString,\n initialConversations: types.areStrings,\n responseUrlEnabled: types.isBool,\n defaultToCurrentConversation: types.isBool,\n filter: types.areStrings,\n minQueryLength: types.isInt,\n optionGroups: types.areOptionGroups,\n initialUser: types.isString,\n initialUsers: types.areStrings,\n maxSelectedItems: types.isInt,\n title: types.isString,\n submit: types.isString,\n close: types.isString,\n deny: types.isString,\n excludeExternalSharedChannels: types.isBool,\n excludeBotUsers: types.isBool,\n text: types.isString,\n privateMetaData: types.isString,\n callbackId: types.isString,\n channel: types.isString,\n clearOnClose: types.isBool,\n notifyOnClose: types.isBool,\n description: types.isString,\n asUser: types.isBool,\n ts: types.isString,\n threadTs: types.isString,\n replaceOriginal: types.isBool,\n deleteOriginal: types.isBool,\n responseType: types.isResponseTypeEnum,\n postAt: types.isTimestamp,\n color: types.isString,\n fallback: types.isString,\n attachments: types.areAttachments,\n dispatchAction: types.isBool,\n onEnterPressed: types.isDispatchConfigEnum,\n onCharacterEntered: types.isDispatchConfigEnum,\n initialTime: types.isHhMmTime,\n mrkdwn: types.isBool,\n};\n","const Validator = require('../lib/validator');\nconst { enumValues, categories, classes } = require('../constants');\n\n\nmodule.exports = {\n isString: new Validator({\n condition: (value) => typeof value === 'string',\n message: 'String',\n }),\n\n areStrings: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => typeof value === 'string').length === values.length\n : false),\n message: 'Strings',\n }),\n\n isInt: new Validator({\n condition: (value) => Number.isInteger(value),\n message: 'Integer',\n }),\n\n isBool: new Validator({\n condition: (value) => typeof value === 'boolean',\n message: 'Boolean',\n }),\n\n isDate: new Validator({\n condition: (value) => value instanceof Date,\n message: 'instance of Date',\n }),\n\n areBlocks: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.category === categories.block).length === values.length\n : false),\n message: 'instances of Blocks',\n }),\n\n isElement: new Validator({\n condition: (value) => value.category === categories.element,\n message: 'instance of Element',\n }),\n\n areElementsOrStrings: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => (typeof value === 'string' || value.category === categories.element)).length === values.length\n : false),\n message: 'instances of Elements',\n }),\n\n isOption: new Validator({\n condition: (value) => value.class === classes.option,\n message: 'instance of Option',\n }),\n\n areOptions: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.option).length === values.length\n : false),\n message: 'instances of Option',\n }),\n\n areOptionGroups: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.optionGroup).length === values.length\n : false),\n message: 'instances of OptionGroup',\n }),\n\n isConfirmationDialogOrString: new Validator({\n condition: (value) => Boolean(typeof value === 'string' || value.class === classes.confirmationDialog),\n message: 'instance of ConfirmationDialog',\n }),\n\n isButtonStyleEnum: new Validator({\n condition: (value) => [enumValues.danger, enumValues.primary].includes(value),\n message: 'String with value \\'danger\\' or \\'primary\\'',\n }),\n\n areStringsOrImages: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => Boolean(typeof value === 'string' || value.class === classes.img)).length === values.length\n : false),\n message: 'Strings or instances of Img',\n }),\n\n isResponseTypeEnum: new Validator({\n condition: (value) => [enumValues.ephemeral, enumValues.inChannel].includes(value),\n message: 'String with value of \\'ephemeral\\'',\n }),\n\n isTimestamp: new Validator({\n condition: (value) => new Date(value).getTime() > 0,\n message: 'UNIX timestamp',\n }),\n\n areAttachments: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.attachment).length === values.length\n : false),\n message: 'instances of Attachment',\n }),\n\n isDispatchConfigEnum: new Validator({\n condition: (value) => [enumValues.onEnterPressed, enumValues.onCharacterEntered].includes(value),\n message: 'String with value \\'on_enter_pressed\\' or \\'on_character_entered\\'',\n }),\n\n isHhMmTime: new Validator({\n condition: (value) => new RegExp('([0-2][0-9]:[0-9][0-9])').test(value),\n message: 'String in the \\'HH:mm\\' format, where \\'HH\\' is the 24-hour format of an hour, and \\'mm\\' is minutes with leading zero',\n }),\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","module.exports = require(\"assert\");;","module.exports = require(\"fs\");;","module.exports = require(\"http\");;","module.exports = require(\"https\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"tty\");;","module.exports = require(\"url\");;","module.exports = require(\"util\");;","module.exports = require(\"zlib\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\n__webpack_require__.ab = __dirname + \"/\";","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(3109);\n"],"mappings":";;;;;;;;;;A;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrDA;AACA;A;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;A;;;;;;ACxIA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BA;AACA;ACDA;AACA;AACA;AACA;;A","sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["../webpack://actions-slack-notify/./lib/gha.js","../webpack://actions-slack-notify/./lib/main.js","../webpack://actions-slack-notify/./lib/slack.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/command.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/core.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/file-command.js","../webpack://actions-slack-notify/./node_modules/@actions/core/lib/utils.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/IncomingWebhook.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/errors.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/index.js","../webpack://actions-slack-notify/./node_modules/@slack/webhook/dist/instrument.js","../webpack://actions-slack-notify/./node_modules/axios/index.js","../webpack://actions-slack-notify/./node_modules/axios/lib/adapters/http.js","../webpack://actions-slack-notify/./node_modules/axios/lib/adapters/xhr.js","../webpack://actions-slack-notify/./node_modules/axios/lib/axios.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/Cancel.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/CancelToken.js","../webpack://actions-slack-notify/./node_modules/axios/lib/cancel/isCancel.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/Axios.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/InterceptorManager.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/buildFullPath.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/createError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/dispatchRequest.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/enhanceError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/mergeConfig.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/settle.js","../webpack://actions-slack-notify/./node_modules/axios/lib/core/transformData.js","../webpack://actions-slack-notify/./node_modules/axios/lib/defaults.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/bind.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/buildURL.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/combineURLs.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/cookies.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isAbsoluteURL.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isAxiosError.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/isURLSameOrigin.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/normalizeHeaderName.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/parseHeaders.js","../webpack://actions-slack-notify/./node_modules/axios/lib/helpers/spread.js","../webpack://actions-slack-notify/./node_modules/axios/lib/utils.js","../webpack://actions-slack-notify/./node_modules/debug/src/browser.js","../webpack://actions-slack-notify/./node_modules/debug/src/common.js","../webpack://actions-slack-notify/./node_modules/debug/src/index.js","../webpack://actions-slack-notify/./node_modules/debug/src/node.js","../webpack://actions-slack-notify/./node_modules/follow-redirects/debug.js","../webpack://actions-slack-notify/./node_modules/follow-redirects/index.js","../webpack://actions-slack-notify/./node_modules/has-flag/index.js","../webpack://actions-slack-notify/./node_modules/ms/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/attachment.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/base/bit.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/confirmation-dialog.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/option-group.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/bits/option.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/actions.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/base/block.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/context.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/divider.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/file.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/header.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/image.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/input.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/blocks/section.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/action-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/confirmable-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/multiselect-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/select-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/base/selectable-element.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/button.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/channel-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/channel-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/checkboxes.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/conversations-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/conversations-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/datepicker.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/external-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/external-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/img.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/overflow-menu.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/radio-buttons.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/static-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/static-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/text-input.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/time-picker.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/user-multiselect.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/elements/user-select.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/base/object-base.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/dispatch-actions-configuration-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/filter-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/markdown-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/objects/plain-text-object.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/advanced-surface.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/base/surface.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/home-tab.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/message.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/surfaces/modal.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/categories.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/classes.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/param-map.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/props.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/types.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/constants/values.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/block-builder-error.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/block-builder-validation-error.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/exception/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/builder-helper.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/helpers/validation-helper.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/builder.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/index.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/slack-dto.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/lib/validator.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/validators/default-type-rules.js","../webpack://actions-slack-notify/./node_modules/slack-block-builder/src/utility/validators/type-validators.js","../webpack://actions-slack-notify/./node_modules/supports-color/index.js","../webpack://actions-slack-notify/external \"assert\"","../webpack://actions-slack-notify/external \"fs\"","../webpack://actions-slack-notify/external \"http\"","../webpack://actions-slack-notify/external \"https\"","../webpack://actions-slack-notify/external \"os\"","../webpack://actions-slack-notify/external \"path\"","../webpack://actions-slack-notify/external \"stream\"","../webpack://actions-slack-notify/external \"tty\"","../webpack://actions-slack-notify/external \"url\"","../webpack://actions-slack-notify/external \"util\"","../webpack://actions-slack-notify/external \"zlib\"","../webpack://actions-slack-notify/webpack/bootstrap","../webpack://actions-slack-notify/webpack/runtime/compat","../webpack://actions-slack-notify/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getURLs = exports.getRefContext = exports.getTag = exports.getBranch = exports.getPRNumber = exports.parseDependabotRef = void 0;\n// --\nconst PR_REF_REGEX = /^refs\\/pull\\/(\\d+)\\/merge$/;\nconst BRANCH_REF_REGEX = /^refs\\/heads\\/(.+)$/;\nconst TAG_REF_REGEX = /^refs\\/tags\\/(.+)$/;\nconst DEPENDABOT_REGEX = /^dependabot\\/(?:[\\w]+)\\/([\\w/-]+)-([\\d]+\\.[\\d]+\\.[\\d]+.*)$/;\n// --\nfunction parseDependabotRef(ref) {\n if (!ref) {\n return undefined;\n }\n const match = ref.match(DEPENDABOT_REGEX);\n if (!match) {\n return undefined;\n }\n return {\n package: match[1].includes('/') ? `@${match[1]}` : match[1],\n version: match[2]\n };\n}\nexports.parseDependabotRef = parseDependabotRef;\nfunction getPRNumber(ref) {\n const match = ref.match(PR_REF_REGEX);\n if (!match)\n return undefined;\n return parseInt(match[1]);\n}\nexports.getPRNumber = getPRNumber;\n// --\nfunction getBranch(ref) {\n const match = ref.match(BRANCH_REF_REGEX);\n if (!match)\n return undefined;\n return match[1];\n}\nexports.getBranch = getBranch;\n// --\nfunction getTag(ref) {\n const match = ref.match(TAG_REF_REGEX);\n if (!match)\n return undefined;\n return match[1];\n}\nexports.getTag = getTag;\n// --\nfunction getRefContext(ref) {\n const pr = getPRNumber(ref);\n if (pr) {\n return `PR *#${pr}*`;\n }\n const tag = getTag(ref);\n if (tag) {\n return `tag *${tag}*`;\n }\n const branch = getBranch(ref);\n if (branch) {\n return `branch *${branch}*`;\n }\n return `*${ref}*`;\n}\nexports.getRefContext = getRefContext;\n// --\nfunction getURLs({ GITHUB_REPOSITORY, GITHUB_SHA, GITHUB_REF, GITHUB_SERVER_URL = 'https://github.com', GITHUB_RUN_ID }) {\n const prNumber = getPRNumber(GITHUB_REF);\n return {\n repo: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}`,\n commit: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}`,\n run: `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}`,\n pr: prNumber\n ? `${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/pull/${prNumber}`\n : undefined\n };\n}\nexports.getURLs = getURLs;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst webhook_1 = require(\"@slack/webhook\");\nconst slack_1 = require(\"./slack\");\nfunction run() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const url = process.env.SLACK_WEBHOOK_URL;\n if (!url) {\n throw new Error('Missing SLACK_WEBHOOK_URL environment variable');\n }\n const webhook = new webhook_1.IncomingWebhook(url);\n const status = core.getInput('status');\n const env = process.env;\n core.info(core.getInput('steps'));\n if (status === 'success') {\n const msg = slack_1.success(env);\n yield webhook.send(msg);\n }\n else if (status === 'failure') {\n const msg = slack_1.failure(env, JSON.parse(core.getInput('steps')));\n yield webhook.send(msg);\n }\n }\n catch (error) {\n core.setFailed(error.message);\n }\n });\n}\nrun();\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActions = exports.getContext = exports.failure = exports.success = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nconst slack_block_builder_1 = require(\"slack-block-builder\");\nconst gha_1 = require(\"./gha\");\nfunction success(env) {\n const { GITHUB_WORKFLOW, GITHUB_REPOSITORY, GITHUB_HEAD_REF } = env;\n const urls = gha_1.getURLs(env);\n const jobName = core.getInput('jobName');\n const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;\n const msg = slack_block_builder_1.Message({\n text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`\n }).blocks(slack_block_builder_1.Blocks.Section({\n text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`\n }));\n const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);\n if (dependabot) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`\n }));\n }\n const context = getContext(env);\n const actions = getActions(env, 'success');\n msg.blocks([context, actions]);\n msg.printPreviewUrl();\n return msg.buildToObject();\n}\nexports.success = success;\n// --\nfunction failure(env, steps) {\n const { GITHUB_WORKFLOW, GITHUB_REPOSITORY, GITHUB_HEAD_REF } = env;\n const urls = gha_1.getURLs(env);\n const jobName = core.getInput('jobName');\n const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW;\n const msg = slack_block_builder_1.Message({\n text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`\n }).blocks([\n slack_block_builder_1.Blocks.Section({\n text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`\n })\n ]);\n const dependabot = gha_1.parseDependabotRef(GITHUB_HEAD_REF);\n if (dependabot) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`\n }));\n }\n if (Object.keys(steps).length > 0) {\n msg.blocks(slack_block_builder_1.Blocks.Section({\n text: Object.entries(steps)\n .map(([id, { outcome }]) => {\n const icon = {\n failure: '✘',\n success: '✔︎',\n skipped: '○'\n }[outcome];\n const format = {\n failure: '*',\n success: '',\n skipped: '_'\n }[outcome];\n return `${format}${icon} ${id}${format}`;\n })\n .join('\\n')\n }));\n }\n const context = getContext(env);\n const actions = getActions(env, 'failure');\n msg.blocks([context, actions]);\n msg.printPreviewUrl();\n return msg.buildToObject();\n}\nexports.failure = failure;\n// --\nfunction getContext(env) {\n const urls = gha_1.getURLs(env);\n const shortSha = env.GITHUB_SHA.slice(0, 8);\n return slack_block_builder_1.Blocks.Context().elements([\n `From <${urls.commit}|\\`${shortSha}\\`> on ${gha_1.getRefContext(env.GITHUB_REF)}`,\n `Triggered by *${env.GITHUB_EVENT_NAME}*`\n ]);\n}\nexports.getContext = getContext;\n// --\nfunction getActions(env, status) {\n const urls = gha_1.getURLs(env);\n const viewWorkflowButton = slack_block_builder_1.Elements.Button({\n text: status === 'failure' ? 'View Failed Workflow' : 'View Workflow',\n url: urls.run\n });\n const actions = slack_block_builder_1.Blocks.Actions().elements(status === 'failure'\n ? viewWorkflowButton.danger()\n : viewWorkflowButton.end());\n if (urls.pr !== undefined) {\n const prNumber = gha_1.getPRNumber(env.GITHUB_REF);\n actions.elements(slack_block_builder_1.Elements.Button({\n text: `View Pull Request #${prNumber}`,\n url: urls.pr\n }));\n }\n return actions;\n}\nexports.getActions = getActions;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n }\n else {\n command_1.issueCommand('set-env', { name }, convertedVal);\n }\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input. The value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n command_1.issueCommand('set-output', { name }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n */\nfunction error(message) {\n command_1.issue('error', message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds an warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n */\nfunction warning(message) {\n command_1.issue('warning', message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', { name }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncomingWebhook = void 0;\nconst axios_1 = __importDefault(require(\"axios\"));\nconst errors_1 = require(\"./errors\");\nconst instrument_1 = require(\"./instrument\");\n/**\n * A client for Slack's Incoming Webhooks\n */\nclass IncomingWebhook {\n constructor(url, defaults = {}) {\n if (url === undefined) {\n throw new Error('Incoming webhook URL is required');\n }\n this.url = url;\n this.defaults = defaults;\n this.axios = axios_1.default.create({\n baseURL: url,\n httpAgent: defaults.agent,\n httpsAgent: defaults.agent,\n maxRedirects: 0,\n proxy: false,\n headers: {\n 'User-Agent': instrument_1.getUserAgent(),\n },\n });\n delete this.defaults.agent;\n }\n /**\n * Send a notification to a conversation\n * @param message - the message (a simple string, or an object describing the message)\n */\n async send(message) {\n // NOTE: no support for TLS config\n let payload = Object.assign({}, this.defaults);\n if (typeof message === 'string') {\n payload.text = message;\n }\n else {\n payload = Object.assign(payload, message);\n }\n try {\n const response = await this.axios.post(this.url, payload);\n return this.buildResult(response);\n }\n catch (error) {\n // Wrap errors in this packages own error types (abstract the implementation details' types)\n if (error.response !== undefined) {\n throw errors_1.httpErrorWithOriginal(error);\n }\n else if (error.request !== undefined) {\n throw errors_1.requestErrorWithOriginal(error);\n }\n else {\n throw error;\n }\n }\n }\n /**\n * Processes an HTTP response into an IncomingWebhookResult.\n */\n buildResult(response) {\n return {\n text: response.data,\n };\n }\n}\nexports.IncomingWebhook = IncomingWebhook;\n//# sourceMappingURL=IncomingWebhook.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpErrorWithOriginal = exports.requestErrorWithOriginal = exports.ErrorCode = void 0;\n/**\n * A dictionary of codes for errors produced by this package\n */\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"RequestError\"] = \"slack_webhook_request_error\";\n ErrorCode[\"HTTPError\"] = \"slack_webhook_http_error\";\n})(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));\n/**\n * Factory for producing a {@link CodedError} from a generic error\n */\nfunction errorWithCode(error, code) {\n // NOTE: might be able to return something more specific than a CodedError with conditional typing\n const codedError = error;\n codedError.code = code;\n return codedError;\n}\n/**\n * A factory to create IncomingWebhookRequestError objects\n * @param original The original error\n */\nfunction requestErrorWithOriginal(original) {\n const error = errorWithCode(new Error(`A request error occurred: ${original.message}`), ErrorCode.RequestError);\n error.original = original;\n return error;\n}\nexports.requestErrorWithOriginal = requestErrorWithOriginal;\n/**\n * A factory to create IncomingWebhookHTTPError objects\n * @param original The original error\n */\nfunction httpErrorWithOriginal(original) {\n const error = errorWithCode(new Error(`An HTTP protocol error occurred: statusCode = ${original.response.status}`), ErrorCode.HTTPError);\n error.original = original;\n return error;\n}\nexports.httpErrorWithOriginal = httpErrorWithOriginal;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorCode = exports.IncomingWebhook = void 0;\nvar IncomingWebhook_1 = require(\"./IncomingWebhook\");\nObject.defineProperty(exports, \"IncomingWebhook\", { enumerable: true, get: function () { return IncomingWebhook_1.IncomingWebhook; } });\nvar errors_1 = require(\"./errors\");\nObject.defineProperty(exports, \"ErrorCode\", { enumerable: true, get: function () { return errors_1.ErrorCode; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgent = exports.addAppMetadata = void 0;\nconst os = __importStar(require(\"os\"));\nconst packageJson = require('../package.json'); // tslint:disable-line:no-require-imports no-var-requires\n/**\n * Replaces occurrences of '/' with ':' in a string, since '/' is meaningful inside User-Agent strings as a separator.\n */\nfunction replaceSlashes(s) {\n return s.replace('/', ':');\n}\nconst baseUserAgent = `${replaceSlashes(packageJson.name)}/${packageJson.version} ` +\n `node/${process.version.replace('v', '')} ` +\n `${os.platform()}/${os.release()}`;\nconst appMetadata = {};\n/**\n * Appends the app metadata into the User-Agent value\n * @param appMetadata.name name of tool to be counted in instrumentation\n * @param appMetadata.version version of tool to be counted in instrumentation\n */\nfunction addAppMetadata({ name, version }) {\n appMetadata[replaceSlashes(name)] = version;\n}\nexports.addAppMetadata = addAppMetadata;\n/**\n * Returns the current User-Agent value for instrumentation\n */\nfunction getUserAgent() {\n const appIdentifier = Object.entries(appMetadata).map(([name, version]) => `${name}/${version}`).join(' ');\n // only prepend the appIdentifier when its not empty\n return ((appIdentifier.length > 0) ? `${appIdentifier} ` : '') + baseUserAgent;\n}\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=instrument.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildFullPath = require('../core/buildFullPath');\nvar buildURL = require('./../helpers/buildURL');\nvar http = require('http');\nvar https = require('https');\nvar httpFollow = require('follow-redirects').http;\nvar httpsFollow = require('follow-redirects').https;\nvar url = require('url');\nvar zlib = require('zlib');\nvar pkg = require('./../../package.json');\nvar createError = require('../core/createError');\nvar enhanceError = require('../core/enhanceError');\n\nvar isHttps = /https:?/;\n\n/**\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} proxy\n * @param {string} location\n */\nfunction setProxy(options, proxy, location) {\n options.hostname = proxy.host;\n options.host = proxy.host;\n options.port = proxy.port;\n options.path = location;\n\n // Basic proxy authorization\n if (proxy.auth) {\n var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n // If a proxy is used, any redirects must also pass through the proxy\n options.beforeRedirect = function beforeRedirect(redirection) {\n redirection.headers.host = redirection.host;\n setProxy(redirection, proxy, redirection.href);\n };\n}\n\n/*eslint consistent-return:0*/\nmodule.exports = function httpAdapter(config) {\n return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {\n var resolve = function resolve(value) {\n resolvePromise(value);\n };\n var reject = function reject(value) {\n rejectPromise(value);\n };\n var data = config.data;\n var headers = config.headers;\n\n // Set User-Agent (required by some servers)\n // Only set header if it hasn't been set in config\n // See https://github.com/axios/axios/issues/69\n if (!headers['User-Agent'] && !headers['user-agent']) {\n headers['User-Agent'] = 'axios/' + pkg.version;\n }\n\n if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(createError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers['Content-Length'] = data.length;\n }\n\n // HTTP basic authentication\n var auth = undefined;\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n // Parse url\n var fullPath = buildFullPath(config.baseURL, config.url);\n var parsed = url.parse(fullPath);\n var protocol = parsed.protocol || 'http:';\n\n if (!auth && parsed.auth) {\n var urlAuth = parsed.auth.split(':');\n var urlUsername = urlAuth[0] || '';\n var urlPassword = urlAuth[1] || '';\n auth = urlUsername + ':' + urlPassword;\n }\n\n if (auth) {\n delete headers.Authorization;\n }\n\n var isHttpsRequest = isHttps.test(protocol);\n var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n\n var options = {\n path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\\?/, ''),\n method: config.method.toUpperCase(),\n headers: headers,\n agent: agent,\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth: auth\n };\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n }\n\n var proxy = config.proxy;\n if (!proxy && proxy !== false) {\n var proxyEnv = protocol.slice(0, -1) + '_proxy';\n var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];\n if (proxyUrl) {\n var parsedProxyUrl = url.parse(proxyUrl);\n var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY;\n var shouldProxy = true;\n\n if (noProxyEnv) {\n var noProxy = noProxyEnv.split(',').map(function trim(s) {\n return s.trim();\n });\n\n shouldProxy = !noProxy.some(function proxyMatch(proxyElement) {\n if (!proxyElement) {\n return false;\n }\n if (proxyElement === '*') {\n return true;\n }\n if (proxyElement[0] === '.' &&\n parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) {\n return true;\n }\n\n return parsed.hostname === proxyElement;\n });\n }\n\n if (shouldProxy) {\n proxy = {\n host: parsedProxyUrl.hostname,\n port: parsedProxyUrl.port,\n protocol: parsedProxyUrl.protocol\n };\n\n if (parsedProxyUrl.auth) {\n var proxyUrlAuth = parsedProxyUrl.auth.split(':');\n proxy.auth = {\n username: proxyUrlAuth[0],\n password: proxyUrlAuth[1]\n };\n }\n }\n }\n }\n\n if (proxy) {\n options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : '');\n setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n var transport;\n var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true);\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsProxy ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n transport = isHttpsProxy ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n }\n\n // Create the request\n var req = transport.request(options, function handleResponse(res) {\n if (req.aborted) return;\n\n // uncompress the response body transparently if required\n var stream = res;\n\n // return the last request in case of redirects\n var lastRequest = res.req || req;\n\n\n // if no content, is HEAD request or decompress disabled we should not decompress\n if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) {\n switch (res.headers['content-encoding']) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'compress':\n case 'deflate':\n // add the unzipper to the body stream processing pipeline\n stream = stream.pipe(zlib.createUnzip());\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n }\n }\n\n var response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: res.headers,\n config: config,\n request: lastRequest\n };\n\n if (config.responseType === 'stream') {\n response.data = stream;\n settle(resolve, reject, response);\n } else {\n var responseBuffer = [];\n stream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) {\n stream.destroy();\n reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n config, null, lastRequest));\n }\n });\n\n stream.on('error', function handleStreamError(err) {\n if (req.aborted) return;\n reject(enhanceError(err, config, null, lastRequest));\n });\n\n stream.on('end', function handleStreamEnd() {\n var responseData = Buffer.concat(responseBuffer);\n if (config.responseType !== 'arraybuffer') {\n responseData = responseData.toString(config.responseEncoding);\n if (!config.responseEncoding || config.responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n\n response.data = responseData;\n settle(resolve, reject, response);\n });\n }\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return;\n reject(enhanceError(err, config, null, req));\n });\n\n // Handle request timeout\n if (config.timeout) {\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devoring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(config.timeout, function handleRequestTimeout() {\n req.abort();\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));\n });\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (req.aborted) return;\n\n req.abort();\n reject(cancel);\n });\n }\n\n // Send the request\n if (utils.isStream(data)) {\n data.on('error', function handleStreamError(err) {\n reject(enhanceError(err, config, null, req));\n }).pipe(req);\n } else {\n req.end(data);\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Create handlers that pass events from native requests\nvar eventHandlers = Object.create(null);\n[\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"].forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\"\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!(typeof data === \"string\" || typeof data === \"object\" && (\"length\" in data))) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (typeof data === \"function\") {\n callback = data;\n data = encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n if (callback) {\n this.once(\"timeout\", callback);\n }\n\n if (this.socket) {\n startTimer(this, msecs);\n }\n else {\n var self = this;\n this._currentRequest.once(\"socket\", function () {\n startTimer(self, msecs);\n });\n }\n\n this.once(\"response\", clearTimer);\n this.once(\"error\", clearTimer);\n\n return this;\n};\n\nfunction startTimer(request, msecs) {\n clearTimeout(request._timeout);\n request._timeout = setTimeout(function () {\n request.emit(\"timeout\");\n }, msecs);\n}\n\nfunction clearTimer() {\n clearTimeout(this._timeout);\n}\n\n// Proxy all other public ClientRequest methods\n[\n \"abort\", \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.substr(0, protocol.length - 1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n this._currentUrl = url.format(this._options);\n\n // Set up event handlers\n request._redirectable = this;\n for (var event in eventHandlers) {\n /* istanbul ignore else */\n if (event) {\n request.on(event, eventHandlers[event]);\n }\n }\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end.\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n var location = response.headers.location;\n if (location && this._options.followRedirects !== false &&\n statusCode >= 300 && statusCode < 400) {\n // Abort the current request\n this._currentRequest.removeAllListeners();\n this._currentRequest.on(\"error\", noop);\n this._currentRequest.abort();\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n this.emit(\"error\", new TooManyRedirectsError());\n return;\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var previousHostName = removeMatchingHeaders(/^host$/i, this._options.headers) ||\n url.parse(this._currentUrl).hostname;\n\n // Create the redirected request\n var redirectUrl = url.resolve(this._currentUrl, location);\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\n\n // Drop the Authorization header if redirecting to another host\n if (redirectUrlParts.hostname !== previousHostName) {\n removeMatchingHeaders(/^authorization$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (typeof this._options.beforeRedirect === \"function\") {\n var responseDetails = { headers: response.headers };\n try {\n this._options.beforeRedirect.call(null, this._options, responseDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n var error = new RedirectionError(\"Redirected request failed: \" + cause.message);\n error.cause = cause;\n this.emit(\"error\", error);\n }\n }\n else {\n // The response is not a redirect; return it as-is\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n }\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters\n if (typeof input === \"string\") {\n var urlStr = input;\n try {\n input = urlToOptions(new URL(urlStr));\n }\n catch (err) {\n /* istanbul ignore next */\n input = url.parse(urlStr);\n }\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return lastValue;\n}\n\nfunction createErrorType(code, defaultMessage) {\n function CustomError(message) {\n Error.captureStackTrace(this, this.constructor);\n this.message = message || defaultMessage;\n }\n CustomError.prototype = new Error();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n CustomError.prototype.code = code;\n return CustomError;\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n 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(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass AttachmentDto extends SlackDto {\n constructor(params) {\n super();\n\n this.color = params.color;\n this.fallback = params.fallback;\n this.blocks = params.blocks;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Attachment extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.color = params.color;\n this.props.fallback = params.fallback;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the color of the border to the left of the block quote for the Attachment\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n color(string) {\n return this.set(string, props.color);\n }\n\n /**\n * Sets the plain text summary of the attachment used in clients that don't show formatted text (eg. IRC, mobile notifications).\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n fallback(string) {\n return this.set(string, props.fallback);\n }\n\n /**\n * Adds Blocks to the Attachment object\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {...Block|Array} blocks Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n blocks(...blocks) {\n return this.append(blocks.flat(), props.blocks);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n };\n\n return this.getResult(AttachmentDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Attachment,\n AttachmentDto,\n};\n","const { Builder } = require('../../utility/lib');\nconst { categories } = require('../../utility/constants');\n\nclass Bit extends Builder {\n constructor() {\n super();\n\n this.category = categories.bit;\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\n\nmodule.exports = Bit;\n","const Bit = require('./bit');\n\nmodule.exports = {\n Bit,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props, enumValues } = require('../utility/constants');\n\nclass ConfirmationDialogDto extends SlackDto {\n constructor(params) {\n super();\n\n this.title = params.title;\n this.text = params.text;\n this.confirm = params.confirm;\n this.deny = params.deny;\n this.style = params.style;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConfirmationDialog extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.title = params.title;\n this.props.text = params.text;\n this.props.confirm = params.confirm;\n this.props.deny = params.deny;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the title displayed in the confirmation dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * Sets the textual content of the confirmation dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 300 characters\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the copy for the button that confirms the action.\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 30 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n confirm(string) {\n return this.set(string, props.confirm);\n }\n\n /**\n * Sets the copy for the button that cancels the action.\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 30 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n deny(string) {\n return this.set(string, props.deny);\n }\n\n /**\n * Sets the 'style' parameter to 'primary', making the\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n primary() {\n return this.set(enumValues.primary, props.style);\n }\n\n /**\n * Sets 'style' parameter to 'danger'\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n danger() {\n return this.set(enumValues.danger, props.style);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getMarkdownObject(this.props.text),\n title: BuilderHelper.getPlainTextObject(this.props.title),\n confirm: BuilderHelper.getPlainTextObject(this.props.confirm),\n deny: BuilderHelper.getPlainTextObject(this.props.deny),\n };\n\n return this.getResult(ConfirmationDialogDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConfirmationDialogDto,\n ConfirmationDialog,\n};\n","const { ConfirmationDialog, ConfirmationDialogDto } = require('./confirmation-dialog');\nconst { Option, OptionDto } = require('./option');\nconst { OptionGroup, OptionGroupDto } = require('./option-group');\nconst { Attachment, AttachmentDto } = require('./attachment');\n\nconst BitDto = {\n ConfirmationDialogDto,\n OptionDto,\n OptionGroupDto,\n AttachmentDto,\n};\n\nconst getBits = (config) => {\n const getInstance = (Class, params) => new Class(params, config);\n\n return {\n\n /**\n * Creates and returns a ConfirmationDialog Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#confirm|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.title] Sets the title displayed in the confirmation dialog\n * @param {string} [params.text] Sets the textual content of the confirmation dialog\n * @param {string} [params.confirm] Sets the text for the button that confirms the action.\n * @param {string} [params.deny]Sets the text for the button that cancels the action.\n * @return {ConfirmationDialog} An instance of ConfirmationDialog\n */\n\n ConfirmationDialog: (params) => getInstance(ConfirmationDialog, params),\n\n /**\n * Creates and returns an Option Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.text] Sets the text displayed in the menu for the current Option\n * @param {string} [params.value] Sets the value passed to your app when this Option is clicked or submitted\n * @param {string} [params.description] Sets a description shown next to the Option in a RadioButton Element\n * @param {string} [params.url] Sets the URL to redirect the user to when this Option is clicked (in an OverflowMenu)\n * @return {Option} An instance of Option\n */\n\n Option: (params) => getInstance(Option, params),\n\n /**\n * Creates and returns an OptionGroup Bit\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.label] Sets the label shown above the group of Options\n * @return {OptionGroup} An instance of OptionsGroup\n */\n\n OptionGroup: (params) => getInstance(OptionGroup, params),\n\n /**\n * Creates and returns an Attachment Bit that can be attached to Message objects\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.color] Sets the color of the block quote border\n * @return {Attachment} An instance of Attachment\n */\n\n Attachment: (params) => getInstance(Attachment, params),\n };\n};\n\nmodule.exports = {\n ConfirmationDialog,\n Option,\n OptionGroup,\n Attachment,\n BitDto,\n getBits,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass OptionGroupDto extends SlackDto {\n constructor(params) {\n super();\n\n this.label = params.label;\n this.options = params.options;\n\n this.pruneAndFreeze();\n }\n}\n\nclass OptionGroup extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.label = params.label;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the label shown above the group of Options\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n label(string) {\n return this.set(string, props.label);\n }\n\n /**\n * Sets the Options displayed in this OptionGroup\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option_group|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n label: BuilderHelper.getPlainTextObject(this.props.label),\n options: BuilderHelper.getBuilderResults(this.props.options),\n };\n\n return this.getResult(OptionGroupDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n OptionGroup,\n OptionGroupDto,\n};\n","const { Bit } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props } = require('../utility/constants');\n\nclass OptionDto extends SlackDto {\n constructor(params) {\n super();\n\n this.text = params.text;\n this.value = params.value;\n this.description = params.description;\n this.url = params.url;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Option extends Bit {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.value = params.value;\n this.props.description = params.description;\n this.props.url = params.url;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text displayed in the menu for the current Option\n *\n * * **Required** ⚠\n * * Max 75 characters.\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the value passed to your app when this Option is clicked or submitted\n *\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n value(string) {\n return this.set(string, props.value);\n }\n\n /**\n * Sets a description shown next to the Option in a RadioButton Element\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n * * Only available for RadioButtons ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n description(string) {\n return this.set(string, props.description);\n }\n\n /**\n * Sets the URL to redirect the user to when this Option is clicked (in an OverflowMenu)\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n * * Only available for Options in an OverflowMenu ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/composition-objects#option|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n url(string) {\n return this.set(string, props.url);\n }\n\n /**\n * @private\n */\n\n build({ isMarkdown } = { isMarkdown: false }) {\n const augmentedProps = {\n text: isMarkdown\n ? BuilderHelper.getMarkdownObject(this.props.text)\n : BuilderHelper.getPlainTextObject(this.props.text),\n description: isMarkdown\n ? BuilderHelper.getMarkdownObject(this.props.description)\n : BuilderHelper.getPlainTextObject(this.props.description),\n };\n\n return this.getResult(OptionDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Option,\n OptionDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ActionsDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.actions;\n this.elements = params.elements;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Actions extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the interactive Elements of the Actions Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 5 Elements\n * * Supports Buttons, Selects, Overflows, and DatePickers\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#actions|View in Slack API Documentation}\n *\n * @param {...Element|Array} elements Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n elements(...elements) {\n return this.append(elements.flat(), props.elements);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n elements: BuilderHelper.getBuilderResults(this.props.elements),\n };\n\n return this.getResult(ActionsDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Actions,\n ActionsDto,\n};\n","const { Builder } = require('../../utility/lib');\nconst { props, categories } = require('../../utility/constants');\n\nclass Block extends Builder {\n constructor() {\n super();\n\n this.category = categories.block;\n }\n\n /**\n * Sets a string to be an identifier for the block, that\n * will be available in interaction payloads\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n * * Must be unique to the view\n * * If a Block changes, blockId property should change, too\n *\n * {@link https://api.slack.com/reference/block-kit/blocks|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n blockId(string) {\n return this.set(string, props.blockId);\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\nmodule.exports = Block;\n","const Block = require('./block');\n\nmodule.exports = {\n Block,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ContextDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.context;\n this.elements = params.elements;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Context extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the interactive Elements of the Context block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 10 Elements\n * * Supports strings and Image Elements\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#context|View in Slack API Documentation}\n *\n * @param {...(string|Img)|Array<(string|Img)>} elements Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n elements(...elements) {\n return this.append(elements.flat(), props.elements);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n elements: BuilderHelper.getElementsForContext(this.props.elements),\n };\n\n return this.getResult(ContextDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Context,\n ContextDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types } = require('../utility/constants');\n\nclass DividerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.divider;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Divider extends Block {\n constructor(params = {}) {\n super();\n\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(DividerDto);\n }\n}\n\n/**\n * {@link https://api.slack.com/reference/block-kit/blocks#divider|View in Slack API Documentation}\n */\n\nmodule.exports = {\n Divider,\n DividerDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types, enumValues, props } = require('../utility/constants');\n\nclass FileDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.file;\n this.source = enumValues.remote;\n this.external_id = params.externalId;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass File extends Block {\n constructor(params = {}) {\n super();\n\n this.props.externalId = params.externalId;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Slack-provided ID for the external file\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#file|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n externalId(string) {\n return this.set(string, props.externalId);\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(FileDto);\n }\n}\n\nmodule.exports = {\n File,\n FileDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass HeaderDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.header;\n this.text = params.text;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Header extends Block {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text to be displayed in the Header Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 3000 characters\n * * Plain text only\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#header|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getPlainTextObject(this.props.text),\n };\n\n return this.getResult(HeaderDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Header,\n HeaderDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ImageDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.image;\n this.image_url = params.imageUrl;\n this.alt_text = params.altText;\n this.title = params.title;\n this.block_id = params.blockId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Image extends Block {\n constructor(params = {}) {\n super();\n\n this.props.imageUrl = params.imageUrl;\n this.props.altText = params.altText;\n this.props.title = params.title;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the source URL to load the Image from\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n imageUrl(string) {\n return this.set(string, props.imageUrl);\n }\n\n /**\n * Sets the textual summary of the Image\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n altText(string) {\n return this.set(string, props.altText);\n }\n\n /**\n * Sets an optional title for the Image\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n title: BuilderHelper.getPlainTextObject(this.props.title),\n };\n\n return this.getResult(ImageDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Image,\n ImageDto,\n};\n","const { Actions, ActionsDto } = require('./actions');\nconst { Context, ContextDto } = require('./context');\nconst { Divider, DividerDto } = require('./divider');\nconst { File, FileDto } = require('./file');\nconst { Header, HeaderDto } = require('./header');\nconst { Image, ImageDto } = require('./image');\nconst { Input, InputDto } = require('./input');\nconst { Section, SectionDto } = require('./section');\n\nconst BlockDto = {\n ActionsDto,\n ContextDto,\n DividerDto,\n FileDto,\n HeaderDto,\n ImageDto,\n InputDto,\n SectionDto,\n};\n\nconst getBlocks = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns an Actions Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#actions|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Actions} An instance of Actions\n */\n\n Actions: (params) => getInstance(Actions, params),\n\n /**\n * Creates and returns a Context Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#context|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Context} An instance of Context\n */\n\n Context: (params) => getInstance(Context, params),\n\n /**\n * Creates and returns a Divider\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#divider|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @return {Divider} An instance of Divider\n */\n\n Divider: (params) => getInstance(Divider, params),\n\n /**\n * Creates and returns a File Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#file|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters for File\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.externalId] Sets the Slack-provided ID for the external file\n * @return {File} An instance of File\n */\n\n File: (params) => getInstance(File, params),\n\n /**\n * Creates and returns a Header Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#header|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.text] Sets the text to be displayed in the Header Block\n * @return {Section} An instance of Header\n */\n\n Header: (params) => getInstance(Header, params),\n\n /**\n * Creates and returns an Image Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#image|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.imageUrl] Sets the source URL to load the Image from\n * @param {string} [params.altText] Sets the textual summary of the Image\n * @param {string} [params.title] Sets an optional title for the Image\n * @return {Image} An instance of Image\n */\n\n Image: (params) => getInstance(Image, params),\n\n /**\n * Creates and returns an Input Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.label] Sets a label to be displayed for the Input Block\n * @param {string} [params.hint] Sets the hint to be displayed under the Input.\n * @return {Input} An instance of Input\n */\n\n Input: (params) => getInstance(Input, params),\n\n /**\n * Creates and returns a Section Block\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.blockId] Sets a string to be an identifier for the block, that will be available in interaction payloads\n * @param {string} [params.text] Sets the text to be displayed in the Section Block\n * @return {Section} An instance of Section\n */\n\n Section: (params) => getInstance(Section, params),\n };\n};\n\nmodule.exports = {\n Actions,\n Context,\n Divider,\n File,\n Header,\n Image,\n Input,\n Section,\n BlockDto,\n getBlocks,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass InputDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.input;\n this.label = params.label;\n this.element = params.element;\n this.dispatch_action = params.dispatchAction;\n this.block_id = params.blockId;\n this.hint = params.hint;\n this.optional = params.optional;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Input extends Block {\n constructor(params = {}) {\n super();\n\n this.props.label = params.label;\n this.props.blockId = params.blockId;\n this.props.hint = params.hint;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets a label to be displayed for the Input Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n label(string) {\n return this.set(string, props.label);\n }\n\n /**\n * Sets the interactive Element of the Input Block\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 1 Element\n * * Supports TextInput, SelectMenus, MultiSelectMenus, and DatePickers\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {Element} element\n * @return {this} The instance on which the method is called\n */\n\n element(element) {\n return this.set(element, props.element);\n }\n\n /**\n * Sets the hint to be displayed under the Input.\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n hint(string) {\n return this.set(string, props.hint);\n }\n\n /**\n * Sets the 'optional' parameter to true, allowing the user to submit\n * the form without inputting a value into the Input Element\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n optional() {\n return this.set(true, props.optional);\n }\n\n /**\n * Sets the 'dispatch_action' parameter to true, meaning an actions\n * payload is sent upon interaction.\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchAction() {\n return this.set(true, props.dispatchAction);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n label: BuilderHelper.getPlainTextObject(this.props.label),\n hint: BuilderHelper.getPlainTextObject(this.props.hint),\n element: BuilderHelper.getBuilderResult(this.props.element),\n };\n\n return this.getResult(InputDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Input,\n InputDto,\n};\n","const { Block } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass SectionDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.blocks.section;\n this.text = params.text;\n this.block_id = params.blockId;\n this.fields = params.fields;\n this.accessory = params.accessory;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Section extends Block {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.blockId = params.blockId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the text to be displayed in the Section Block\n *\n * **Slack Validation Rules:**\n * * **Required if property fields undefined** ⚠\n * * Max 3000 characters\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets text fields in two columns, side-by-side\n *\n * **Slack Validation Rules:**\n * * **Required if property text undefined** ⚠\n * * Max 10 items\n * * Max 2000 characters for each field\n * * Supports markdown\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {...string|Array} fields Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n fields(...fields) {\n return this.append(fields.flat(), props.fields);\n }\n\n /**\n * Sets an interactive Element to be attached to the Section Block\n *\n * **Slack Validation Rules:**\n * * Max 1 item\n *\n * {@link https://api.slack.com/reference/block-kit/blocks#section|View in Slack API Documentation}\n *\n * @param {Element} element\n * @return {this} The instance on which the method is called\n */\n\n accessory(element) {\n return this.set(element, props.accessory);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n text: BuilderHelper.getMarkdownObject(this.props.text),\n fields: BuilderHelper.getFields(this.props.fields),\n accessory: BuilderHelper.getBuilderResult(this.props.accessory),\n };\n\n return this.getResult(SectionDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Section,\n SectionDto,\n};\n","const Element = require('./element');\nconst { props } = require('../../utility/constants');\n\n/**\n * @class Make new Button\n * @abstract\n * @extends Element\n */\n\nclass ActionElement extends Element {\n /**\n * Sets a string to be an identifier for the source of\n * an action in interaction payloads\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Must be unique to view\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n actionId(string) {\n return this.set(string, props.actionId);\n }\n}\n\nmodule.exports = ActionElement;\n","const ActionElement = require('./action-element');\nconst { props } = require('../../utility/constants');\n\nclass ConfirmableElement extends ActionElement {\n /**\n * Adds a ConfirmationDialog to be shown upon interacting with\n * the current element or submitting the view\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {ConfirmationDialog} obj\n * @return {this} The instance on which the method is called\n */\n\n confirm(obj) {\n return this.set(obj, props.confirm);\n }\n}\n\nmodule.exports = ConfirmableElement;\n","const { Builder } = require('../../utility/lib');\nconst { categories } = require('../../utility/constants');\n\nclass Element extends Builder {\n constructor() {\n super();\n\n this.category = categories.element;\n }\n\n /**\n * Performs no alterations to the object. Meant to simulate a closing\n * HTML tag for those who prefer the look of such code.\n *\n * @return {this} The instance on which the method is called\n */\n\n end() {\n return this;\n }\n}\n\nmodule.exports = Element;\n","const Element = require('./element');\nconst ActionElement = require('./action-element');\nconst ConfirmableElement = require('./confirmable-element');\nconst SelectableElement = require('./selectable-element');\nconst SelectElement = require('./select-element');\nconst MultiSelectElement = require('./multiselect-element');\n\nmodule.exports = {\n Element,\n ActionElement,\n ConfirmableElement,\n SelectableElement,\n SelectElement,\n MultiSelectElement,\n};\n","const SelectElement = require('./select-element');\nconst { props } = require('../../utility/constants');\n\nclass MultiSelectElement extends SelectElement {\n /**\n * Sets a limit to how many items the user can select in any one MultiSelect\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#multi_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n maxSelectedItems(int) {\n return this.set(int, props.maxSelectedItems);\n }\n}\n\nmodule.exports = MultiSelectElement;\n","const ConfirmableElement = require('./confirmable-element');\nconst { props } = require('../../utility/constants');\n\nclass SelectElement extends ConfirmableElement {\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#select|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n}\n\nmodule.exports = SelectElement;\n","const ConfirmableElement = require('./confirmable-element');\nconst { props } = require('../../utility/constants');\n\nclass SelectableElement extends ConfirmableElement {\n /**\n * Sets the Options for the current Element\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n}\n\nmodule.exports = SelectableElement;\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, enumValues, props } = require('../utility/constants');\n\n\nclass ButtonDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.button;\n this.text = params.text;\n this.action_id = params.actionId;\n this.url = params.url;\n this.value = params.value;\n this.style = params.style;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\n\nclass Button extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.text = params.text;\n this.props.actionId = params.actionId;\n this.props.url = params.url;\n this.props.value = params.value;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the display text for the Button\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 75 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the URL to redirect the user to when this Button is clicked\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n url(string) {\n return this.set(string, props.url);\n }\n\n /**\n * Sets the value to be passed to your app when this Button is clicked\n *\n * **Slack Validation Rules:**\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n value(string) {\n return this.set(string, props.value);\n }\n\n /**\n * Sets the style property to 'primary,' making the Button green\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n primary() {\n return this.set(enumValues.primary, props.style);\n }\n\n /**\n * Sets the style property to 'danger,' making the Button red\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n danger() {\n return this.set(enumValues.danger, props.style);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n text: BuilderHelper.getPlainTextObject(this.props.text),\n };\n\n return this.getResult(ButtonDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Button,\n ButtonDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ChannelMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.channels;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_channels = params.initialChannels;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ChannelMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialChannels(...strings) {\n return this.append(strings.flat(), props.initialChannels);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ChannelMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ChannelMultiSelect,\n ChannelMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ChannelSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.channels;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_channel = params.initialChannel;\n this.confirm = params.confirm;\n this.response_url_enabled = params.responseUrlEnabled;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ChannelSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialChannel = params.initialChannel;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @param {string} string Channel ID\n * @return {this} The instance on which the method is called\n */\n\n initialChannel(string) {\n return this.set(string, props.initialChannel);\n }\n\n /**\n * Sets option to true, allowing a response URL to be provided at submission\n *\n * **Slack Validation Rules:**\n * * Only available in modals with Inputs ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n responseUrlEnabled() {\n return this.set(true, props.responseUrlEnabled);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ChannelSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ChannelSelect,\n ChannelSelectDto,\n};\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass CheckboxesDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.checkbox;\n this.action_id = params.actionId;\n this.options = params.options;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Checkboxes extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#checkboxes|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options, { isMarkdown: true }),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions, { isMarkdown: true }),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(CheckboxesDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n Checkboxes,\n CheckboxesDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ConversationMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.conversations;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_conversations = params.initialConversations;\n this.default_to_current_conversation = params.defaultToCurrentConversation;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n this.filter = params.filter;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConversationMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected items in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialConversations(...strings) {\n return this.append(strings.flat(), props.initialConversations);\n }\n\n /**\n * Sets default selected conversation to the one currently open for the user\n *\n * **Slack Validation Rules:**\n * * If initial conversations provided, this option is ignored\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n defaultToCurrentConversation() {\n return this.set(true, props.defaultToCurrentConversation);\n }\n\n /**\n * Defines which conversations should be included in the list. Possible\n * enumValues are *im*, *impm*, *private*, and *public*\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} filters Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n filter(...filters) {\n return this.append(filters.flat(), props.filter);\n }\n\n /**\n * Excludes external shared conversations from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeExternalSharedChannels() {\n return this.set(true, props.excludeExternalSharedChannels);\n }\n\n /**\n * Excludes conversations with bot users from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeBotUsers() {\n return this.set(true, props.excludeBotUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n filter: BuilderHelper.getFilter(this.props),\n };\n\n return this.getResult(ConversationMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConversationMultiSelect,\n ConversationMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ConversationSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.conversations;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_conversation = params.initialConversation;\n this.default_to_current_conversation = params.defaultToCurrentConversation;\n this.confirm = params.confirm;\n this.response_url_enabled = params.responseUrlEnabled;\n this.filter = params.filter;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ConversationSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialConversation = params.initialConversation;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialConversation(string) {\n return this.set(string, props.initialConversation);\n }\n\n /**\n * Sets default selected conversation to the one currently open for the user\n *\n * **Slack Validation Rules:**\n * * If initial conversations provided, this option is ignored\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n defaultToCurrentConversation() {\n return this.set(true, props.defaultToCurrentConversation);\n }\n\n /**\n * Sets option to true, allowing a response URL to be provided at submission\n *\n * **Slack Validation Rules:**\n * * Only available in modals with Inputs ⚠\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n responseUrlEnabled() {\n return this.set(true, props.responseUrlEnabled);\n }\n\n /**\n * Defines which conversations should be included in the list. Possible\n * enumValues are *im*, *impm*, *private*, and *public*\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {...string|Array} filters Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n filter(...filters) {\n return this.append(filters.flat(), props.filter);\n }\n\n /**\n * Excludes external shared conversations from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeExternalSharedChannels() {\n return this.set(true, props.excludeExternalSharedChannels);\n }\n\n /**\n * Excludes conversations with bot users from the list\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n excludeBotUsers() {\n return this.set(true, props.excludeBotUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n filter: BuilderHelper.getFilter(this.props),\n };\n\n return this.getResult(ConversationSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ConversationSelect,\n ConversationSelectDto,\n};\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass DatePickerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.datepicker;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_date = params.initialDate;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass DatePicker extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialDate = params.initialDate;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default selected date in the menu\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {Date} date\n * @return {this} The instance on which the method is called\n */\n\n initialDate(date) {\n return this.set(date, props.initialDate);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialDate: BuilderHelper.getFormattedDate(this.props.initialDate),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(DatePickerDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n DatePicker,\n DatePickerDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ExternalMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.external;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.min_query_length = params.minQueryLength;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ExternalMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.minQueryLength = params.minQueryLength;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets a minimum number of characters types before querying your options URL\n *\n * **Slack Validation Rules:**\n * * If not set, request will be sent on every character change\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minQueryLength(int) {\n return this.set(int, props.minQueryLength);\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Array} options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ExternalMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ExternalMultiSelect,\n ExternalMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ExternalSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.external;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_option = params.initialOption;\n this.min_query_length = params.minQueryLength;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass ExternalSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.minQueryLength = params.minQueryLength;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the select menu to have an initial value\n *\n * **Slack Validation Rules:**\n * * Must be exact match to one of the Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * Sets a minimum number of characters types before querying your options URL\n *\n * **Slack Validation Rules:**\n * * If not set, request will be sent on every character change\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minQueryLength(int) {\n return this.set(int, props.minQueryLength);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialOption: BuilderHelper.getOption(this.props.initialOption),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(ExternalSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n ExternalSelect,\n ExternalSelectDto,\n};\n","const { Element } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { types, props } = require('../utility/constants');\n\nclass ImgDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.image;\n this.image_url = params.imageUrl;\n this.alt_text = params.altText;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Img extends Element {\n constructor(params = {}) {\n super();\n\n this.props.imageUrl = params.imageUrl;\n this.props.altText = params.altText;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the source URL to load the Img from\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n imageUrl(string) {\n return this.set(string, props.imageUrl);\n }\n\n /**\n * Sets the textual summary of the Img\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 2000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n altText(string) {\n return this.set(string, props.altText);\n }\n\n /**\n * @private\n */\n\n build() {\n return this.getResult(ImgDto);\n }\n}\n\nmodule.exports = {\n Img,\n ImgDto,\n};\n","const { Button, ButtonDto } = require('./button');\nconst { ChannelMultiSelect, ChannelMultiSelectDto } = require('./channel-multiselect');\nconst { ChannelSelect, ChannelSelectDto } = require('./channel-select');\nconst { Checkboxes, CheckboxesDto } = require('./checkboxes');\nconst { ConversationMultiSelect, ConversationMultiSelectDto } = require('./conversations-multiselect');\nconst { ConversationSelect, ConversationSelectDto } = require('./conversations-select');\nconst { DatePicker, DatePickerDto } = require('./datepicker');\nconst { ExternalMultiSelect, ExternalMultiSelectDto } = require('./external-multiselect');\nconst { ExternalSelect, ExternalSelectDto } = require('./external-select');\nconst { Img, ImgDto } = require('./img');\nconst { TextInput, TextInputDto } = require('./text-input');\nconst { OverflowMenu, OverflowMenuDto } = require('./overflow-menu');\nconst { RadioButtons, RadioButtonsDto } = require('./radio-buttons');\nconst { StaticSelect, StaticSelectDto } = require('./static-select');\nconst { StaticMultiSelect, StaticMultiSelectDto } = require('./static-multiselect');\nconst { TimePicker, TimePickerDto } = require('./time-picker');\nconst { UserMultiSelect, UserMultiSelectDto } = require('./user-multiselect');\nconst { UserSelect, UserSelectDto } = require('./user-select');\n\nconst ElementDto = {\n ButtonDto,\n ChannelMultiSelectDto,\n ChannelSelectDto,\n CheckboxesDto,\n ConversationMultiSelectDto,\n ConversationSelectDto,\n DatePickerDto,\n ExternalMultiSelectDto,\n ExternalSelectDto,\n ImgDto,\n TextInputDto,\n OverflowMenuDto,\n RadioButtonsDto,\n StaticMultiSelectDto,\n StaticSelectDto,\n TimePickerDto,\n UserMultiSelectDto,\n UserSelectDto,\n};\n\nconst getElements = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns a Button Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#button|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.text] Sets the display text for the Button\n * @param {string} [params.url] Sets the URL to redirect the user to when this Button is clicked\n * @param {string} [params.value] Sets the value to be passed to your app when this Button is clicked\n * @return {Button} An instance of Button\n */\n\n Button: (params) => getInstance(Button, params),\n\n /**\n * Creates and returns a ChannelMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {ChannelMultiSelect} An instance of ChannelMultiSelect\n */\n\n ChannelMultiSelect: (params) => getInstance(ChannelMultiSelect, params),\n\n /**\n * Creates and returns a ChannelSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#channel_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialChannel] Sets the default selected item in the menu\n * @return {ChannelSelect} An instance of ChannelSelect\n */\n\n ChannelSelect: (params) => getInstance(ChannelSelect, params),\n\n /**\n * Creates and returns a Checkboxes Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#checkboxes|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {Checkboxes} An instance of Checkboxes\n */\n\n Checkboxes: (params) => getInstance(Checkboxes, params),\n\n /**\n * Creates and returns a ConversationMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {ConversationMultiSelect} An instance of ConversationMultiSelect\n */\n\n ConversationMultiSelect: (params) => getInstance(ConversationMultiSelect, params),\n\n /**\n * Creates and returns a ConversationSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#conversation_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialConversation] Sets the default selected item in the menu\n * @return {ConversationSelect} An instance of ConversationSelect\n */\n\n ConversationSelect: (params) => getInstance(ConversationSelect, params),\n\n /**\n * Creates and returns a DatePicker Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#datepicker|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialDate] Sets the default selected date in the menu\n * @return {DatePicker} An instance of DatePicker\n */\n\n DatePicker: (params) => getInstance(DatePicker, params),\n\n /**\n * Creates and returns a ExternalMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @param {int} [params.minQueryLength] Sets a minimum number of characters types before querying your options URL\n * @return {ExternalMultiSelect} An instance of ExternalMultiSelect\n */\n\n ExternalMultiSelect: (params) => getInstance(ExternalMultiSelect, params),\n\n /**\n * Creates and returns a ExternalSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#external_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.minQueryLength] Sets a minimum number of characters types before querying your options URL\n * @return {ExternalSelect} An instance of ExternalSelect\n */\n\n ExternalSelect: (params) => getInstance(ExternalSelect, params),\n\n /**\n * Creates and returns an Img Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#image|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.imageUrl] Sets the source URL to load the Img from\n * @param {string} [params.altText] Sets the textual summary of the Img\n * @return {Img} An instance of Img\n */\n\n Img: (params) => getInstance(Img, params),\n\n /**\n * Creates and returns an OverflowMenu Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#overflow|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {OverflowMenu} An instance of OverflowMenu\n */\n\n OverflowMenu: (params) => getInstance(OverflowMenu, params),\n\n /**\n * Creates and returns a RadioButtons Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#radio|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @return {RadioButtons} An instance of RadioButtons\n */\n\n RadioButtons: (params) => getInstance(RadioButtons, params),\n\n /**\n * Creates and returns a StaticMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {StaticMultiSelect} An instance of StaticMultiSelect\n */\n\n StaticMultiSelect: (params) => getInstance(StaticMultiSelect, params),\n\n /**\n * Creates and returns a StaticSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @return {StaticSelect} An instance of StaticSelect\n */\n\n StaticSelect: (params) => getInstance(StaticSelect, params),\n\n /**\n * Creates and returns a TextInput Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialValue] Sets the default text entered into the TextInput at modal load\n * @param {int} [params.minLength] Sets a minimum character count in order for the user to submit the form\n * @param {int} [params.maxLength] Sets a maximum character count allowed to send the form\n * @return {TextInput} An instance of Input\n */\n\n TextInput: (params) => getInstance(TextInput, params),\n\n /**\n * Creates and returns a TimePicker Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialTime] Sets the default selected time in the menu\n * @return {TimePicker} An instance of TimePicker\n */\n\n TimePicker: (params) => getInstance(TimePicker, params),\n\n /**\n * Creates and returns a UserMultiSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_multi_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {int} [params.maxSelectedItems] Sets a limit to how many items the user can select\n * @return {UserMultiSelect} An instance of UserMultiSelect\n */\n\n UserMultiSelect: (params) => getInstance(UserMultiSelect, params),\n\n /**\n * Creates and returns a UserSelect Element\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_select|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.actionId] Sets a string to be an identifier for the source of an action in interaction payloads\n * @param {string} [params.placeholder] Adds the text in place of the input before selected or interacted with\n * @param {string} [params.initialUser]\n * @return {UserSelect} An instance of UserSelect\n */\n\n UserSelect: (params) => getInstance(UserSelect, params),\n };\n};\n\nmodule.exports = {\n Button,\n ChannelMultiSelect,\n ChannelSelect,\n Checkboxes,\n ConversationMultiSelect,\n ConversationSelect,\n DatePicker,\n ExternalMultiSelect,\n ExternalSelect,\n Img,\n TextInput,\n OverflowMenu,\n RadioButtons,\n StaticMultiSelect,\n StaticSelect,\n TimePicker,\n UserMultiSelect,\n UserSelect,\n ElementDto,\n getElements,\n};\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types } = require('../utility/constants');\n\nclass OverflowMenuDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.overflow;\n this.action_id = params.actionId;\n this.options = params.options;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass OverflowMenu extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(OverflowMenuDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n OverflowMenu,\n OverflowMenuDto,\n};\n\n/**\n * {@link https://api.slack.com/reference/block-kit/block-elements#overflow|View in Slack API Documentation}\n */\n","const { SelectableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass RadioButtonsDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.radiobutton;\n this.action_id = params.actionId;\n this.options = params.options;\n this.initial_option = params.initialOption;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass RadioButtons extends SelectableElement {\n constructor(params = {}) {\n super();\n\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#radio|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n options: BuilderHelper.getOptions(this.props.options, { isMarkdown: true }),\n initialOption: BuilderHelper.getOption(this.props.initialOption, { isMarkdown: true }),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(RadioButtonsDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n RadioButtons,\n RadioButtonsDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass StaticMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.static;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.options = params.options;\n this.option_groups = params.optionGroups;\n this.initial_options = params.initialOptions;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass StaticMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Options for the StaticMultiSelect\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Option[]} options\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * Sets the OptionGroup for the StaticMultiSelect, Options placed into\n * logical and named groups.\n *\n * **Slack Validation Rules:**\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...OptionGroup|OptionGroup[]} optionGroups\n * @return {this} The instance on which the method is called\n */\n\n optionGroups(...optionGroups) {\n return this.append(optionGroups.flat(), props.optionGroups);\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must have exact matches to the included Options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_multi_select|View in Slack API Documentation}\n *\n * @param {...Option|Array } options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialOptions(...options) {\n return this.append(options.flat(), props.initialOptions);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n options: BuilderHelper.getOptions(this.props.options),\n initialOptions: BuilderHelper.getOptions(this.props.initialOptions),\n optionGroups: BuilderHelper.getBuilderResults(this.props.optionGroups),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(StaticMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n StaticMultiSelect,\n StaticMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass StaticSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.static;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.options = params.options;\n this.option_groups = params.optionGroups;\n this.initial_option = params.initialOption;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass StaticSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Options for the StaticSelect\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {...Option|Array } options Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n options(...options) {\n return this.append(options.flat(), props.options);\n }\n\n /**\n * Sets the OptionGroup for the StaticSelect, Options placed into\n * logical and named groups.\n *\n * **Slack Validation Rules:**\n * * Max 100 Options\n * * Only one of options property or optionGroups should be defined\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {...OptionGroup|Array} optionGroups Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n optionGroups(...optionGroups) {\n return this.append(optionGroups.flat(), props.optionGroups);\n }\n\n /**\n * Sets the default selected item in the menu\n *\n * **Slack Validation Rules:**\n * * Must be an exact match to one of the provided options\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#static_select|View in Slack API Documentation}\n *\n * @param {Option} option\n * @return {this} The instance on which the method is called\n */\n\n initialOption(option) {\n return this.set(option, props.initialOption);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n options: BuilderHelper.getOptions(this.props.options),\n optionGroups: BuilderHelper.getBuilderResults(this.props.optionGroups),\n initialOption: BuilderHelper.getOption(this.props.initialOption),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(StaticSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n StaticSelect,\n StaticSelectDto,\n};\n","const { ActionElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props, enumValues } = require('../utility/constants');\n\nclass TextInputDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.input;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_value = params.initialValue;\n this.multiline = params.multiline;\n this.min_length = params.minLength;\n this.max_length = params.maxLength;\n this.dispatch_action_config = params.dispatchActionConfig;\n\n this.pruneAndFreeze();\n }\n}\n\nclass TextInput extends ActionElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialValue = params.initialValue;\n this.props.minLength = params.minLength;\n this.props.maxLength = params.maxLength;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default text entered into the TextInput at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialValue(string) {\n return this.set(string, props.initialValue);\n }\n\n /**\n * Sets the Input to be multiline, as opposed to single line\n *\n * **Slack Validation Rules:**\n * * Defaults to false\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n multiline() {\n return this.set(true, props.multiline);\n }\n\n /**\n * Sets a minimum character count in order for the user to submit the form\n *\n * **Slack Validation Rules:**\n * * Maximum 3000 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n minLength(int) {\n return this.set(int, props.minLength);\n }\n\n /**\n * Sets a maximum character count allowed to send the form\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @param {int} int\n * @return {this} The instance on which the method is called\n */\n\n maxLength(int) {\n return this.set(int, props.maxLength);\n }\n\n /**\n * Configures the text input to send an actions payload when Enter is pressed\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchActionOnEnterPressed() {\n return this.set(enumValues.onEnterPressed, props.onEnterPressed);\n }\n\n /**\n * Configures the text input to send an actions payload when a character is entered\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#input|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n dispatchActionOnCharacterEntered() {\n return this.set(enumValues.onCharacterEntered, props.onCharacterEntered);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n dispatchActionConfig: BuilderHelper.getDispatchActionsConfigurationObject(this.props),\n };\n\n return this.getResult(TextInputDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n TextInput,\n TextInputDto,\n};\n","const { ConfirmableElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass TimePickerDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.timepicker;\n this.action_id = params.actionId;\n this.placeholder = params.placeholder;\n this.initial_time = params.initialTime;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass TimePicker extends ConfirmableElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialTime = params.initialTime;\n\n this.finalizeConstruction();\n }\n\n /**\n * Adds the text in place of the input before selected or\n * interacted with\n *\n * **Slack Validation Rules:**\n * * Max 150 characters\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n placeholder(string) {\n return this.set(string, props.placeholder);\n }\n\n /**\n * Sets the default selected time in the menu\n *\n * **Slack Validation Rules:**\n * * Set in HH:mm format, where HH is 24-hour hour format and mm is minutes with a leading zero\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#timepicker|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n initialTime(string) {\n return this.set(string, props.initialTime);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n initialDate: BuilderHelper.getFormattedDate(this.props.initialDate),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(TimePickerDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n TimePicker,\n TimePickerDto,\n};\n","const { MultiSelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass UserMultiSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.multiselect.users;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_users = params.initialUsers;\n this.confirm = params.confirm;\n this.max_selected_items = params.maxSelectedItems;\n\n this.pruneAndFreeze();\n }\n}\n\nclass UserMultiSelect extends MultiSelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.maxSelectedItems = params.maxSelectedItems;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets users to display in the menu by default at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_multi_select|View in Slack API Documentation}\n *\n * @param {...string|Array} strings Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n initialUsers(...strings) {\n return this.append(strings.flat(), props.initialUsers);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(UserMultiSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n UserMultiSelect,\n UserMultiSelectDto,\n};\n","const { SelectElement } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass UserSelectDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.elements.select.users;\n this.placeholder = params.placeholder;\n this.action_id = params.actionId;\n this.initial_user = params.initialUser;\n this.confirm = params.confirm;\n\n this.pruneAndFreeze();\n }\n}\n\nclass UserSelect extends SelectElement {\n constructor(params = {}) {\n super();\n\n this.props.placeholder = params.placeholder;\n this.props.actionId = params.actionId;\n this.props.initialUser = params.initialUser;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets user to display in the menu by default at load\n *\n * {@link https://api.slack.com/reference/block-kit/block-elements#users_select|View in Slack API Documentation}\n *\n * @param {string} string User IDs\n * @return {this} The instance on which the method is called\n */\n\n initialUser(string) {\n return this.set(string, props.initialUser);\n }\n\n /**\n * @private\n */\n\n build() {\n const augmentedProps = {\n placeholder: BuilderHelper.getPlainTextObject(this.props.placeholder),\n confirm: BuilderHelper.getBuilderResult(this.props.confirm),\n };\n\n return this.getResult(UserSelectDto, augmentedProps);\n }\n}\n\nmodule.exports = {\n UserSelect,\n UserSelectDto,\n};\n","const { getSurfaces } = require('./surfaces');\nconst { getBlocks } = require('./blocks');\nconst { getBits } = require('./bits');\nconst { getElements } = require('./elements');\n\nconst Bits = getBits();\nconst Blocks = getBlocks();\nconst Elements = getElements();\n\nmodule.exports = {\n ...getSurfaces(),\n Blocks,\n Elements,\n Bits,\n};\n","const ObjectBase = require('./object-base');\n\nmodule.exports = {\n ObjectBase,\n};\n","class ObjectBase {\n cleanAndFreeze() {\n Object.keys(this)\n .forEach((prop) => typeof this[prop] === 'undefined' && delete this[prop]);\n\n return Object.freeze(this);\n }\n}\n\nmodule.exports = ObjectBase;\n","const { ObjectBase } = require('./base');\n\nclass DispatchActionsConfigurationObject extends ObjectBase {\n constructor(params) {\n super();\n\n this.trigger_actions_on = params.triggerActionsOn;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = DispatchActionsConfigurationObject;\n","const { ObjectBase } = require('./base');\n\nclass FilterObject extends ObjectBase {\n constructor(params) {\n super();\n\n this.include = params.filter;\n this.exclude_external_shared_channels = params.excludeExternalSharedChannels;\n this.exclude_bot_users = params.excludeBotUsers;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = FilterObject;\n","const FilterObject = require('./filter-object');\nconst MarkdownObject = require('./markdown-object');\nconst PlainTextObject = require('./plain-text-object');\nconst DispatchActionsConfigurationObject = require('./dispatch-actions-configuration-object');\n\nmodule.exports = {\n FilterObject,\n MarkdownObject,\n PlainTextObject,\n DispatchActionsConfigurationObject,\n};\n","const { ObjectBase } = require('./base');\nconst { types } = require('../utility/constants');\n\nclass MarkdownObject extends ObjectBase {\n constructor(text) {\n super();\n\n this.type = types.objects.markdown;\n this.text = text;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = MarkdownObject;\n","const { ObjectBase } = require('./base');\nconst { types } = require('../utility/constants');\n\nclass PlainTextObject extends ObjectBase {\n constructor(text) {\n super();\n\n this.type = types.objects.text;\n this.text = text;\n\n this.cleanAndFreeze();\n }\n}\n\nmodule.exports = PlainTextObject;\n","const Surface = require('./surface');\nconst { props } = require('../../utility/constants');\n\nclass AdvancedSurface extends Surface {\n /**\n * Sets a string sent back to your server together with all action and submission events.\n *\n * **Slack Validation Rules:**\n * * Max 3000 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n privateMetaData(string) {\n return this.set(string, props.privateMetaData);\n }\n\n /**\n * Sets a string sent back to your server together with all action and submission events to\n * identify app actions for the current view.\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n callbackId(string) {\n return this.set(string, props.callbackId);\n }\n\n /**\n * Sets a custom identifier that must be unique for all views on a per-team basis\n *\n * **Slack Validation Rules:**\n * * Max 255 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n externalId(string) {\n return this.set(string, props.externalId);\n }\n\n /**\n * When called, builds the view and prints to the console the preview URL in\n * order to open and preview the view on the Slack Block Builder website\n */\n\n printPreviewUrl() {\n this.build();\n\n console.log(encodeURI(`https://app.slack.com/block-kit-builder/#${JSON.stringify(this.result)}`).replace(/[!'()*]/g, escape));\n }\n}\n\nmodule.exports = AdvancedSurface;\n","const Surface = require('./surface');\nconst AdvancedSurface = require('./advanced-surface');\n\nmodule.exports = {\n Surface,\n AdvancedSurface,\n};\n","const { Builder } = require('../../utility/lib');\nconst { props, categories } = require('../../utility/constants');\n\nclass Surface extends Builder {\n constructor() {\n super();\n\n this.category = categories.surface;\n }\n\n /**\n * Sets the Blocks of the Surface\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 100 Blocks\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {...Block|Array} blocks Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n blocks(...blocks) {\n return this.append(blocks.flat(), props.blocks);\n }\n\n /**\n * Builds the view and returns it as a Slack API-compatible object.\n *\n * @return {Object} An object representation of the built UI\n */\n\n buildToObject() {\n this.build();\n\n return this.result;\n }\n\n /**\n * Builds the view and returns it as a Slack API-compatible JSON string.\n *\n * @return {String} A JSON string representation of the built UI\n */\n\n buildToJSON() {\n this.build();\n\n return JSON.stringify(this.result);\n }\n\n /**\n * Builds the view and returns a Slack API-compatible array of Blocks objects.\n *\n * {@link https://api.slack.com/block-kit|View in Slack API Documentation}\n *\n * @return {Array} Array of built Block objects\n */\n\n getBlocks() {\n this.build();\n\n return [...this.result.blocks];\n }\n\n /**\n * When called, builds the view and prints to the console the preview URL in\n * order to open and preview the view on the Slack Block Builder website\n */\n\n printPreviewUrl() {\n this.build();\n\n console.log(encodeURI(`https://app.slack.com/block-kit-builder/#${JSON.stringify({ blocks: this.result.blocks, attachments: this.result.attachments })}`).replace(/[!'()*]/g, escape));\n }\n}\n\nmodule.exports = Surface;\n","const { AdvancedSurface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types } = require('../utility/constants');\n\nclass HomeTabDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.surfaces.home;\n this.blocks = params.blocks;\n this.private_metadata = params.privateMetaData;\n this.callback_id = params.callbackId;\n this.external_id = params.externalId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass HomeTab extends AdvancedSurface {\n constructor(params = {}) {\n super();\n\n this.props.privateMetaData = params.privateMetaData;\n this.props.callbackId = params.callbackId;\n this.props.externalId = params.externalId;\n\n this.finalizeConstruction();\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n };\n\n this.getResult(HomeTabDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n HomeTab,\n HomeTabDto,\n};\n\n/**\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n */\n","const { HomeTab, HomeTabDto } = require('./home-tab');\nconst { Message, MessageDto } = require('./message');\nconst { Modal, ModalDto } = require('./modal');\n\nconst SurfaceDto = {\n HomeTabDto,\n MessageDto,\n ModalDto,\n};\n\nconst getSurfaces = () => {\n const getInstance = (Class, params) => new Class(params);\n\n return {\n\n /**\n * Creates and returns a HomeTab Surface\n *\n * {@link https://api.slack.com/surfaces/tabs|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.callbackId] Sets a string sent back to your server together with all action and submission events.\n * @param {string} [params.externalId] Sets a custom identifier that must be unique for all views on a per-team basis\n * @param {string} [params.privateMetaData] Sets a string sent back to your server together with all action and submission events.\n * @return {HomeTab} An instance of HomeTab\n */\n\n HomeTab: (params) => getInstance(HomeTab, params),\n\n /**\n * Creates and returns a Message Surface\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.channel] The Slack channel ID to which the message is to be sent\n * @param {string} [params.text] Text to be displayed in the notification on the Message, or in the body, if there are no Blocks available\n * @param {timestamp} [params.threadTs] Sets the message to be a reply in a thread to the message whose timestamp is passed\n * @param {timestamp} [params.postAt] Sets a time for the message to be posted, as a scheduled message\n * @return {Message} An instance of Message\n */\n\n Message: (params) => getInstance(Message, params),\n\n /**\n * Creates and returns a Modal Surface\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {Object} [params] Constructor parameters\n * @param {string} [params.title] Sets a title for your Modal\n * @param {string} [params.close] Sets the text for the close button\n * @param {string} [params.submit] Sets the text for the submit button\n * @param {string} [params.callbackId] Sets a string sent back to your server together with all action and submission events.\n * @param {string} [params.externalId] Sets a custom identifier that must be unique for all views on a per-team basis\n * @param {string} [params.privateMetaData] Sets a string sent back to your server together with all action and submission events.\n * @return {Modal} An instance of Modal\n */\n\n Modal: (params) => getInstance(Modal, params),\n };\n};\n\nmodule.exports = {\n HomeTab,\n Message,\n Modal,\n SurfaceDto,\n getSurfaces,\n};\n","const { Surface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { props, enumValues } = require('../utility/constants');\n\nclass MessageDto extends SlackDto {\n constructor(params) {\n super();\n\n this.channel = params.channel;\n this.text = params.text;\n this.blocks = params.blocks;\n this.attachments = params.attachments;\n this.as_user = params.asUser;\n this.ts = params.ts;\n this.thread_ts = params.threadTs;\n this.replace_original = params.replaceOriginal;\n this.delete_original = params.deleteOriginal;\n this.response_type = params.responseType;\n this.post_at = params.postAt;\n this.mrkdwn = params.mrkdwn;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Message extends Surface {\n constructor(params = {}) {\n super();\n\n this.props.channel = params.channel;\n this.props.text = params.text;\n this.props.ts = params.ts;\n this.props.threadTs = params.threadTs;\n this.props.postAt = params.postAt;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the Attachments of the Message object\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @param {...Attachment|Array} attachments Accepts multiple arguments or Array\n * @return {this} The instance on which the method is called\n */\n\n attachments(...attachments) {\n return this.append(attachments.flat(), props.attachments);\n }\n\n /**\n * The Slack channel ID to which the message is to be sent\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string Slack channel ID\n * @return {this} The instance on which the method is called\n */\n\n channel(string) {\n return this.set(string, props.channel);\n }\n\n /**\n * Text to be displayed in the notification on the Message, or\n * in the body, if there are no Blocks available\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string Slack channel ID\n * @return {this} The instance on which the method is called\n */\n\n text(string) {\n return this.set(string, props.text);\n }\n\n /**\n * Sets the message to be sent as either the user whose oAuth token is being used,\n * or as a bot user\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n asUser() {\n return this.set(true, props.asUser);\n }\n\n /**\n * Sets the message to be a reply in a thread to the message whose timestamp is passed\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string The Slack-produced timestamp of message to be replied to\n * @return {this} The instance on which the method is called\n */\n\n threadTs(string) {\n return this.set(string, props.threadTs);\n }\n\n /**\n * Used to update a message. Sets the timestamp of the message to update.\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {string} string The Slack-produced timestamp of message to be replaced\n * @return {this} The instance on which the method is called\n */\n\n ts(string) {\n return this.set(string, props.ts);\n }\n\n /**\n * Sets the message to be replace the original message from which the interaction was received\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n replaceOriginal() {\n return this.set(true, props.replaceOriginal);\n }\n\n /**\n * Sets the original message from which interaction was received to be deleted\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n deleteOriginal() {\n return this.set(true, props.deleteOriginal);\n }\n\n /**\n * Sets the message to only be visible by the user who invoked the action\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n ephemeral() {\n return this.set(enumValues.ephemeral, props.responseType);\n }\n\n /**\n * Sets the message to visible to everyone in the channel\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n inChannel() {\n return this.set(enumValues.inChannel, props.responseType);\n }\n\n /**\n * Sets a time for the message to be posted, as a scheduled message\n *\n * {@link https://api.slack.com/messaging/composing|View in Slack API Documentation}\n *\n * @param {timestamp} timestamp The timestamp of message to be replied to\n * @return {this} The instance on which the method is called\n */\n\n postAt(timestamp) {\n return this.set(timestamp, props.postAt);\n }\n\n /**\n * When set, the Slack API knows that markdown in the `text` property should be ignored.\n *\n * {@link https://api.slack.com/reference/messaging/payload|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n ignoreMarkdown() {\n return this.set(false, props.mrkdwn);\n }\n\n /**\n * Builds the view and returns a Slack API-compatible array of Attachment objects.\n *\n * {@link https://api.slack.com/reference/messaging/attachments|View in Slack API Documentation}\n *\n * @return {Array} Array of built Attachment objects\n */\n\n getAttachments() {\n this.build();\n\n return [...this.result.attachments];\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n attachments: BuilderHelper.getBuilderResults(this.props.attachments),\n };\n\n this.getResult(MessageDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n Message,\n MessageDto,\n};\n","const { AdvancedSurface } = require('./base');\nconst { SlackDto } = require('../utility/lib');\nconst { BuilderHelper } = require('../utility/helpers');\nconst { types, props } = require('../utility/constants');\n\nclass ModalDto extends SlackDto {\n constructor(params) {\n super();\n\n this.type = types.surfaces.modal;\n this.title = params.title;\n this.blocks = params.blocks;\n this.close = params.close;\n this.submit = params.submit;\n this.private_metadata = params.privateMetaData;\n this.callback_id = params.callbackId;\n this.clear_on_close = params.clearOnClose;\n this.notify_on_close = params.notifyOnClose;\n this.external_id = params.externalId;\n\n this.pruneAndFreeze();\n }\n}\n\nclass Modal extends AdvancedSurface {\n constructor(params = {}) {\n super();\n\n this.props.title = params.title;\n this.props.close = params.close;\n this.props.submit = params.submit;\n this.props.privateMetaData = params.privateMetaData;\n this.props.callbackId = params.callbackId;\n this.props.externalId = params.externalId;\n\n this.finalizeConstruction();\n }\n\n /**\n * Sets the title of the Modal dialog\n *\n * **Slack Validation Rules:**\n * * **Required** ⚠\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n title(string) {\n return this.set(string, props.title);\n }\n\n /**\n * Sets the text displayed on the button that closes the Modal\n *\n * **Slack Validation Rules:**\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n close(string) {\n return this.set(string, props.close);\n }\n\n /**\n * Sets the text displayed on the button that submits the Modal\n *\n * **Slack Validation Rules:**\n * * Max 24 characters\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @param {string} string\n * @return {this} The instance on which the method is called\n */\n\n submit(string) {\n return this.set(string, props.submit);\n }\n\n /**\n * Configures the Modal to clear all open and pushed views in the Modal flow\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n clearOnClose() {\n return this.set(true, props.clearOnClose);\n }\n\n /**\n * Configures the Modal to send a notification to your server when closed\n *\n * {@link https://api.slack.com/reference/surfaces/views|View in Slack API Documentation}\n *\n * @return {this} The instance on which the method is called\n */\n\n notifyOnClose() {\n return this.set(true, props.notifyOnClose);\n }\n\n /**\n * @private\n */\n\n build() {\n if (!this.hasBeenBuilt) {\n const augmentedProps = {\n title: BuilderHelper.getPlainTextObject(this.props.title),\n blocks: BuilderHelper.getBuilderResults(this.props.blocks),\n close: BuilderHelper.getPlainTextObject(this.props.close),\n submit: BuilderHelper.getPlainTextObject(this.props.submit),\n };\n\n this.getResult(ModalDto, augmentedProps);\n }\n\n return this.result;\n }\n}\n\nmodule.exports = {\n Modal,\n ModalDto,\n};\n","module.exports = {\n bit: 'Bit',\n element: 'Element',\n block: 'Block',\n surface: 'Surface',\n};\n","module.exports = {\n option: 'Option',\n optionGroup: 'OptionGroup',\n confirmationDialog: 'ConfirmationDialog',\n img: 'Img',\n attachment: 'Attachment',\n};\n","const types = require('./types');\nconst enumValues = require('./values');\nconst props = require('./props');\nconst categories = require('./categories');\nconst classes = require('./classes');\nconst paramMap = require('./param-map');\n\nmodule.exports = {\n types,\n enumValues,\n props,\n categories,\n classes,\n paramMap,\n};\n","module.exports = {\n actionId: 'action_id',\n blocks: 'blocks',\n blockId: 'block_id',\n maxSelectedItems: 'max_selected_items',\n title: 'title',\n text: 'text',\n confirm: 'confirm',\n deny: 'deny',\n style: 'style',\n danger: 'danger',\n label: 'label',\n options: 'options',\n value: 'value',\n description: 'description',\n url: 'url',\n elements: 'elements',\n externalId: 'external_id',\n imageUrl: 'image_url',\n altText: 'alt_text',\n element: 'element',\n hint: 'hint',\n optional: 'optional',\n fields: 'fields',\n accessory: 'accessory',\n initialChannels: 'initial_channels',\n initialChannel: 'initial_channel',\n responseUrlEnabled: 'response_url_enabled',\n initialOptions: 'initial_options',\n initialConversations: 'initial_conversations',\n defaultToCurrentConversation: 'default_to_current_conversation',\n filter: 'filter',\n excludeExternalSharedChannels: 'exclude_external_shared_channels',\n excludeBotUsers: 'exclude_bot_users',\n initialConversation: 'initial_conversation',\n initialDate: 'initial_date',\n minQueryLength: 'min_query_length',\n initialOption: 'initial_option',\n optionGroups: 'option_groups',\n placeholder: 'placeholder',\n initialValue: 'initial_value',\n multiline: 'multiline',\n minLength: 'min_length',\n maxLength: 'max_length',\n initialUsers: 'initial_users',\n initialUser: 'initial_user',\n channel: 'channel',\n close: 'close',\n submit: 'submit',\n clearOnClose: 'clear_on_close',\n notifyOnClose: 'notify_on_close',\n privateMetaData: 'private_metadata',\n callbackId: 'callback_id',\n asUser: 'as_user',\n ts: 'ts',\n threadTs: 'thread_ts',\n replaceOriginal: 'replace_original',\n deleteOriginal: 'delete_original',\n responseType: 'response_type',\n postAt: 'post_at',\n color: 'color',\n fallback: 'fallback',\n attachments: 'attachments',\n dispatchAction: 'dispatch_action',\n dispatchActionConfig: 'dispatch_action_config',\n initialTime: 'initial_time',\n mrkdwn: 'mrkdwn',\n};\n","module.exports = {\n blocks: 'blocks',\n elements: 'elements',\n blockId: 'blockId',\n externalId: 'externalId',\n label: 'label',\n element: 'element',\n hint: 'hint',\n optional: 'optional',\n fields: 'fields',\n accessory: 'accessory',\n actionId: 'actionId',\n url: 'url',\n style: 'style',\n value: 'value',\n option: 'option',\n confirm: 'confirm',\n imageUrl: 'imageUrl',\n altText: 'altText',\n options: 'options',\n initialOptions: 'initialOptions',\n initialOption: 'initialOption',\n placeholder: 'placeholder',\n initialDate: 'initialDate',\n initialValue: 'initialValue',\n multiline: 'multiline',\n minLength: 'minLength',\n maxLength: 'maxLength',\n initialChannel: 'initialChannel',\n initialChannels: 'initialChannels',\n initialConversation: 'initialConversation',\n initialConversations: 'initialConversations',\n responseUrlEnabled: 'responseUrlEnabled',\n defaultToCurrentConversation: 'defaultToCurrentConversation',\n filter: 'filter',\n minQueryLength: 'minQueryLength',\n optionGroups: 'optionGroups',\n initialUser: 'initialUser',\n initialUsers: 'initialUsers',\n maxSelectedItems: 'maxSelectedItems',\n title: 'title',\n submit: 'submit',\n close: 'close',\n deny: 'deny',\n excludeExternalSharedChannels: 'excludeExternalSharedChannels',\n excludeBotUsers: 'excludeBotUsers',\n text: 'text',\n privateMetaData: 'privateMetaData',\n callbackId: 'callbackId',\n channel: 'channel',\n clearOnClose: 'clearOnClose',\n notifyOnClose: 'notifyOnClose',\n description: 'description',\n danger: 'danger',\n primary: 'primary',\n asUser: 'asUser',\n threadTs: 'threadTs',\n replaceOriginal: 'replaceOriginal',\n deleteOriginal: 'deleteOriginal',\n responseType: 'responseType',\n postAt: 'postAt',\n ephemeral: 'ephemeral',\n inChannel: 'inChannel',\n ts: 'ts',\n color: 'color',\n fallback: 'fallback',\n attachments: 'attachments',\n dispatchAction: 'dispatchAction',\n dispatchActionConfig: 'dispatchActionConfig',\n onEnterPressed: 'onEnterPressed',\n onCharacterEntered: 'onCharacterEntered',\n dispatchActionOnEnterPressed: 'dispatchActionOnEnterPressed',\n dispatchActionOnCharacterEntered: 'dispatchActionOnCharacterEntered',\n initialTime: 'initialTime',\n mrkdwn: 'mrkdwn',\n ignoreMarkdown: 'ignoreMarkdown',\n};\n","module.exports = {\n surfaces: {\n home: 'home',\n modal: 'modal',\n },\n blocks: {\n section: 'section',\n actions: 'actions',\n context: 'context',\n input: 'input',\n file: 'file',\n divider: 'divider',\n image: 'image',\n header: 'header',\n },\n elements: {\n button: 'button',\n checkbox: 'checkboxes',\n datepicker: 'datepicker',\n timepicker: 'timepicker',\n image: 'image',\n overflow: 'overflow',\n input: 'plain_text_input',\n radiobutton: 'radio_buttons',\n select: {\n static: 'static_select',\n external: 'external_select',\n users: 'users_select',\n conversations: 'conversations_select',\n channels: 'channels_select',\n },\n multiselect: {\n static: 'multi_static_select',\n external: 'multi_external_select',\n users: 'multi_users_select',\n conversations: 'multi_conversations_select',\n channels: 'multi_channels_select',\n },\n },\n objects: {\n text: 'plain_text',\n markdown: 'mrkdwn',\n },\n};\n","module.exports = {\n remote: 'remote',\n danger: 'danger',\n primary: 'primary',\n ephemeral: 'ephemeral',\n inChannel: 'in_channel',\n onEnterPressed: 'on_enter_pressed',\n onCharacterEntered: 'on_character_entered',\n};\n","class BlockBuilderError extends Error {\n constructor(message) {\n super(message);\n this.name = 'BlockBuilderError';\n }\n}\n\nmodule.exports = BlockBuilderError;\n","class BlockBuilderValidationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'BlockBuilderValidationError';\n }\n}\n\nmodule.exports = BlockBuilderValidationError;\n","const BlockBuilderError = require('./block-builder-error');\nconst BlockBuilderValidationError = require('./block-builder-validation-error');\n\nmodule.exports = {\n BlockBuilderValidationError,\n BlockBuilderError,\n};\n","const Objects = require('../../objects');\n\nclass BuilderHelper {\n static getOption(builder, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builder)) {\n return undefined;\n }\n\n if (!builder.hasBeenBuilt) {\n builder.build({ isMarkdown });\n }\n\n return builder.result;\n }\n\n static getOptions(builders, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builders)) {\n return undefined;\n }\n\n return builders.map((builder) => this.getBuilderResult(builder, { isMarkdown }));\n }\n\n static getBuilderResult(builder, { isMarkdown } = { isMarkdown: false }) {\n if (this.isUndefined(builder)) {\n return undefined;\n }\n\n if (!builder.hasBeenBuilt) {\n builder.build({ isMarkdown });\n }\n\n return builder.result;\n }\n\n static getBuilderResults(builders) {\n if (this.isUndefined(builders)) {\n return undefined;\n }\n\n return builders.map((builder) => this.getBuilderResult(builder));\n }\n\n static getPlainTextObject(string) {\n if (this.isUndefined(string)) {\n return undefined;\n }\n\n return new Objects.PlainTextObject(string);\n }\n\n static getMarkdownObject(string) {\n if (this.isUndefined(string)) {\n return undefined;\n }\n\n return new Objects.MarkdownObject(string);\n }\n\n static getElementsForContext(array) {\n if (this.isUndefined(array)) {\n return undefined;\n }\n\n return array.map((item) => (typeof item === 'string'\n ? this.getMarkdownObject(item)\n : item.build()));\n }\n\n static getFields(array) {\n if (this.isUndefined(array)) {\n return undefined;\n }\n\n return array.map((item) => this.getMarkdownObject(item));\n }\n\n\n static getFormattedDate(date) {\n if (this.isUndefined(date)) {\n return undefined;\n }\n\n return date.toISOString().split('T')[0];\n }\n\n static getFilter(props) {\n const { filter, excludeBotUsers, excludeExternalSharedChannels } = props;\n\n if (this.areUndefined(filter, excludeBotUsers, excludeExternalSharedChannels)) {\n return undefined;\n }\n\n return new Objects.FilterObject({ filter, excludeBotUsers, excludeExternalSharedChannels });\n }\n\n static getDispatchActionsConfigurationObject(props) {\n const { onEnterPressed, onCharacterEntered } = props;\n\n if (this.areUndefined(onEnterPressed, onCharacterEntered)) {\n return undefined;\n }\n\n return new Objects.DispatchActionsConfigurationObject({ triggerActionsOn: [onEnterPressed, onCharacterEntered].filter(Boolean) });\n }\n\n static isUndefined(value) {\n return typeof value === 'undefined';\n }\n\n static areUndefined(...values) {\n return values.filter((value) => this.isUndefined(value)).length === values.length;\n }\n}\n\nmodule.exports = BuilderHelper;\n","const BuilderHelper = require('./builder-helper');\nconst ValidationHelper = require('./validation-helper');\n\nmodule.exports = {\n BuilderHelper,\n ValidationHelper,\n};\n","const defaultTypeRules = require('../validators/default-type-rules');\n\nclass ValidationHelper {\n static getTypeValidator(prop) {\n return defaultTypeRules[prop];\n }\n}\n\nmodule.exports = ValidationHelper;\n","const { ValidationHelper } = require('../helpers');\nconst { BlockBuilderError, BlockBuilderValidationError } = require('../exception');\n\nclass Builder {\n constructor() {\n this.class = this.constructor.name;\n this.category = null;\n this.props = {};\n this.result = {};\n this.hasBeenBuilt = false;\n }\n\n /**\n * @protected\n */\n\n set(value, prop) {\n if (typeof this.props[prop] !== 'undefined') {\n throw new BlockBuilderError(`Property ${prop} for ${this.constructor.name} can only be assigned once.`);\n }\n\n this.validateProp(value, prop);\n\n this.props[prop] = value;\n\n return this;\n }\n\n /**\n * @protected\n */\n\n append(value, prop) {\n const prunedValue = value.filter(Boolean);\n\n if (prunedValue.length > 0) {\n this.validateProp(prunedValue, prop);\n\n this.props[prop] = typeof this.props[prop] === 'undefined'\n ? prunedValue\n : this.props[prop].concat(prunedValue);\n }\n\n return this;\n }\n\n /**\n * @protected\n */\n\n getResult(Class, augmentedProps) {\n this.validateState();\n\n this.result = new Class({ ...this.props, ...augmentedProps });\n this.hasBeenBuilt = true;\n\n Object.freeze(this);\n\n return this.result;\n }\n\n /**\n * @protected\n */\n\n finalizeConstruction() {\n Object.keys(this.props).map((prop) => this.validateProp(this.props[prop], prop));\n Object.keys(this.props).forEach((prop) => typeof this.props[prop] === 'undefined' && delete this.props[prop]);\n Object.seal(this);\n }\n\n /**\n * @private\n */\n\n validateProp(value, prop) {\n this.validateState();\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n const typeValidator = ValidationHelper.getTypeValidator(prop);\n const typeValidation = typeValidator.validate(value);\n\n if (typeValidation.failed) {\n throw new BlockBuilderValidationError(`Property '${prop}' of ${this.constructor.name} only accepts ${typeValidation.message}.`);\n }\n }\n\n /**\n * @private\n */\n\n validateState() {\n if (this.hasBeenBuilt) {\n throw new BlockBuilderError(`Builder for ${this.constructor.name} has been built and can no longer be modified.`);\n }\n }\n\n /**\n * Should not be called directly\n * @protected\n */\n\n build() {\n throw new BlockBuilderError(`Builder ${this.constructor.name} must have a declared 'build' method`);\n }\n}\n\nmodule.exports = Builder;\n","const Builder = require('./builder');\nconst SlackDto = require('./slack-dto');\nconst Validator = require('./validator');\n\nmodule.exports = {\n Builder,\n SlackDto,\n Validator,\n};\n","class SlackDto {\n /**\n * @protected\n */\n\n pruneAndFreeze() {\n Object.keys(this)\n .forEach((prop) => typeof this[prop] === 'undefined' && delete this[prop]);\n\n Object.freeze(this);\n }\n}\n\nmodule.exports = SlackDto;\n","class Validator {\n constructor({ condition, message }) {\n this.condition = condition;\n this.message = message;\n }\n\n validate(value) {\n return {\n failed: !this.condition(value),\n message: this.message,\n };\n }\n}\n\nmodule.exports = Validator;\n","const types = require('./type-validators');\n\nmodule.exports = {\n blocks: types.areBlocks,\n elements: types.areElementsOrStrings,\n blockId: types.isString,\n externalId: types.isString,\n label: types.isString,\n element: types.isElement,\n hint: types.isString,\n optional: types.isBool,\n fields: types.areStringsOrImages,\n accessory: types.isElement,\n actionId: types.isString,\n url: types.isString,\n style: types.isButtonStyleEnum,\n primary: types.isButtonStyleEnum,\n danger: types.isButtonStyleEnum,\n value: types.isString,\n option: types.isOption,\n confirm: types.isConfirmationDialogOrString,\n imageUrl: types.isString,\n altText: types.isString,\n options: types.areOptions,\n initialOptions: types.areOptions,\n initialOption: types.isOption,\n placeholder: types.isString,\n initialDate: types.isDate,\n initialValue: types.isString,\n multiline: types.isBool,\n minLength: types.isInt,\n maxLength: types.isInt,\n initialChannel: types.isString,\n initialChannels: types.areStrings,\n initialConversation: types.isString,\n initialConversations: types.areStrings,\n responseUrlEnabled: types.isBool,\n defaultToCurrentConversation: types.isBool,\n filter: types.areStrings,\n minQueryLength: types.isInt,\n optionGroups: types.areOptionGroups,\n initialUser: types.isString,\n initialUsers: types.areStrings,\n maxSelectedItems: types.isInt,\n title: types.isString,\n submit: types.isString,\n close: types.isString,\n deny: types.isString,\n excludeExternalSharedChannels: types.isBool,\n excludeBotUsers: types.isBool,\n text: types.isString,\n privateMetaData: types.isString,\n callbackId: types.isString,\n channel: types.isString,\n clearOnClose: types.isBool,\n notifyOnClose: types.isBool,\n description: types.isString,\n asUser: types.isBool,\n ts: types.isString,\n threadTs: types.isString,\n replaceOriginal: types.isBool,\n deleteOriginal: types.isBool,\n responseType: types.isResponseTypeEnum,\n postAt: types.isTimestamp,\n color: types.isString,\n fallback: types.isString,\n attachments: types.areAttachments,\n dispatchAction: types.isBool,\n onEnterPressed: types.isDispatchConfigEnum,\n onCharacterEntered: types.isDispatchConfigEnum,\n initialTime: types.isHhMmTime,\n mrkdwn: types.isBool,\n};\n","const Validator = require('../lib/validator');\nconst { enumValues, categories, classes } = require('../constants');\n\n\nmodule.exports = {\n isString: new Validator({\n condition: (value) => typeof value === 'string',\n message: 'String',\n }),\n\n areStrings: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => typeof value === 'string').length === values.length\n : false),\n message: 'Strings',\n }),\n\n isInt: new Validator({\n condition: (value) => Number.isInteger(value),\n message: 'Integer',\n }),\n\n isBool: new Validator({\n condition: (value) => typeof value === 'boolean',\n message: 'Boolean',\n }),\n\n isDate: new Validator({\n condition: (value) => value instanceof Date,\n message: 'instance of Date',\n }),\n\n areBlocks: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.category === categories.block).length === values.length\n : false),\n message: 'instances of Blocks',\n }),\n\n isElement: new Validator({\n condition: (value) => value.category === categories.element,\n message: 'instance of Element',\n }),\n\n areElementsOrStrings: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => (typeof value === 'string' || value.category === categories.element)).length === values.length\n : false),\n message: 'instances of Elements',\n }),\n\n isOption: new Validator({\n condition: (value) => value.class === classes.option,\n message: 'instance of Option',\n }),\n\n areOptions: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.option).length === values.length\n : false),\n message: 'instances of Option',\n }),\n\n areOptionGroups: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.optionGroup).length === values.length\n : false),\n message: 'instances of OptionGroup',\n }),\n\n isConfirmationDialogOrString: new Validator({\n condition: (value) => Boolean(typeof value === 'string' || value.class === classes.confirmationDialog),\n message: 'instance of ConfirmationDialog',\n }),\n\n isButtonStyleEnum: new Validator({\n condition: (value) => [enumValues.danger, enumValues.primary].includes(value),\n message: 'String with value \\'danger\\' or \\'primary\\'',\n }),\n\n areStringsOrImages: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => Boolean(typeof value === 'string' || value.class === classes.img)).length === values.length\n : false),\n message: 'Strings or instances of Img',\n }),\n\n isResponseTypeEnum: new Validator({\n condition: (value) => [enumValues.ephemeral, enumValues.inChannel].includes(value),\n message: 'String with value of \\'ephemeral\\'',\n }),\n\n isTimestamp: new Validator({\n condition: (value) => new Date(value).getTime() > 0,\n message: 'UNIX timestamp',\n }),\n\n areAttachments: new Validator({\n condition: (values) => (Array.isArray(values)\n ? values.filter((value) => value.class === classes.attachment).length === values.length\n : false),\n message: 'instances of Attachment',\n }),\n\n isDispatchConfigEnum: new Validator({\n condition: (value) => [enumValues.onEnterPressed, enumValues.onCharacterEntered].includes(value),\n message: 'String with value \\'on_enter_pressed\\' or \\'on_character_entered\\'',\n }),\n\n isHhMmTime: new Validator({\n condition: (value) => new RegExp('([0-2][0-9]:[0-9][0-9])').test(value),\n message: 'String in the \\'HH:mm\\' format, where \\'HH\\' is the 24-hour format of an hour, and \\'mm\\' is minutes with leading zero',\n }),\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","module.exports = require(\"assert\");;","module.exports = require(\"fs\");;","module.exports = require(\"http\");;","module.exports = require(\"https\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"tty\");;","module.exports = require(\"url\");;","module.exports = require(\"util\");;","module.exports = require(\"zlib\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\n__webpack_require__.ab = __dirname + \"/\";","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(3109);\n"],"mappings":";;;;;;;;;;A;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrDA;AACA;A;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACzfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;A;;;;;;ACxIA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;;;ACDA;AACA;A;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BA;AACA;ACDA;AACA;AACA;AACA;;A","sourceRoot":""}
\ No newline at end of file
diff --git a/src/slack.ts b/src/slack.ts
index 5caae88..8a06870 100644
--- a/src/slack.ts
+++ b/src/slack.ts
@@ -15,17 +15,17 @@ export function success(env: GitHubActionsEnv) {
const jobName = core.getInput('jobName')
const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW
const msg = Message({
- text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`
+ text: `✔︎ ${runName} passed on ${GITHUB_REPOSITORY}`
}).blocks(
Blocks.Section({
- text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
+ text: `*✔︎ ${runName}* passed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
})
)
const dependabot = parseDependabotRef(GITHUB_HEAD_REF)
if (dependabot) {
msg.blocks(
Blocks.Section({
- text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
+ text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
})
)
}
@@ -46,17 +46,17 @@ export function failure(env: GitHubActionsEnv, steps: Steps) {
const runName = jobName ? `${GITHUB_WORKFLOW}/${jobName}` : GITHUB_WORKFLOW
const msg = Message({
- text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`
+ text: `🚨 ${runName} failed on ${GITHUB_REPOSITORY}`
}).blocks([
Blocks.Section({
- text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
+ text: `*🚨 ${runName}* failed on <${urls.repo}|*${GITHUB_REPOSITORY}*>`
})
])
const dependabot = parseDependabotRef(GITHUB_HEAD_REF)
if (dependabot) {
msg.blocks(
Blocks.Section({
- text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
+ text: `📦 *${dependabot.package}* ${dependabot.version} _(by Dependabot)_`
})
)
}
@@ -96,7 +96,6 @@ export function getContext(env: GitHubActionsEnv) {
return Blocks.Context().elements([
`From <${urls.commit}|\`${shortSha}\`> on ${getRefContext(env.GITHUB_REF)}`,
`Triggered by *${env.GITHUB_EVENT_NAME}*`
- // ...(duration ? [`Took *${duration}*`] : [])
])
}