diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 55bb2f0..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - 'env': { - 'commonjs': true, - 'es6': true, - 'node': true, - "mocha": true - }, - 'extends': 'eslint:recommended', - 'globals': { - 'Atomics': 'readonly', - 'SharedArrayBuffer': 'readonly' - }, - 'parserOptions': { - 'ecmaVersion': 2018 - }, - 'rules': { - 'indent': [ - 'error', - 'tab' - ], - 'linebreak-style': [ - 'error', - 'unix' - ], - 'quotes': [ - 'error', - 'single' - ], - 'semi': [ - 'error', - 'always' - ] - } -}; \ No newline at end of file diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml deleted file mode 100644 index 9ca86ec..0000000 --- a/.github/workflows/nodejs.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Node.js CI - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [10.x, 12.x] - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm ci - - run: npm run build --if-present - - run: npm test - env: - CI: true diff --git a/.gitignore b/.gitignore index 030fc7a..d570088 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ node_modules/ -.nyc_output/ + diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7e22077..0000000 --- a/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -(The MIT License) - -Copyright 2020 https://github.com/wickedest - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index a3131ec..be74dec 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,23 @@ # irs-form-filler -Form fill USA IRS documents + +A tool for filling out IRS income tax forms. + +# Warning + +_You_ are responsible for filing your taxes correctly, not the maintainers of **irs-form-filler**. If you know what you are doing, then this tool can help you. This tool is only a form filler to the best of its ability for the specific tax year. Do not rely only on this tool. The maintainers are developers, not tax experts. + +Specifically, this tool was designed to file taxes for US citizens who reside abroad, file their taxes within their country of residence and need to submit their taxes to the IRS with (hopefully) $0.00 amount owed. Some companies charge substiantial amounts for filing, and this is a punative tax on US citizens living abroad. + +# Initialize a new tax year project + +```bash +$ mkdir tax-2020 +$ cd tax-2020 +$ npx irs-form-filler init +``` + +# Fill out all forms for the tax year + +```bash +$ npx irs-form-filler fill config.yaml +``` diff --git a/bin/fill b/bin/fill new file mode 100755 index 0000000..456f0c9 --- /dev/null +++ b/bin/fill @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +const path = require('path'); +const yargs = require('yargs'); +const chalk = require('chalk'); +const fill = require('../src'); +const year = `${new Date().getUTCFullYear() - 1}`; + +const { argv } = require('yargs') + .command( + '* [--only form] [-o output] [-d key] ', + 'Fill PDF tax forms.', + (yargs) => { + yargs.positional('config', { + describe: 'The YAML config file to use when filling forms.', + type: 'string', + required: true + }).option( + 'only', { + description: 'Only fill the specified tax document', + } + ).option( + 'output', { + alias: 'o', + description: 'The output directory for the filled forms.', + default: 'filled' + } + ).option( + 'debug', { + alias: 'd', + description: 'Debug a key, e.g. "part.2.line1". Use with --inspect-brk.' + } + ).alias( + 'v', 'version' + ).alias( + 'h', 'help' + ); + } + ); + +let only; +if (typeof argv.only === 'string') { + only = [ argv.only ]; +} else { + only = argv.only; +} + +fill({ + config: argv.config, + output: argv.output, + debug: argv.debug, + only +}).catch((ex) => { + console.error(chalk.red(ex.stack)); +}); diff --git a/bin/fill-tax b/bin/fill-tax deleted file mode 100755 index ed6713b..0000000 --- a/bin/fill-tax +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -const path = require('path'); -const yargs = require('yargs'); -const chalk = require('chalk'); -const fill = require('../src'); -const year = `${new Date().getUTCFullYear() - 1}`; - -yargs - .usage('Usage: $0 [options] --only [form] --year [year] ') - .options({ - generate: { - type: 'boolean', - desc: 'Generates form data into: ./data' - } - }) - .alias('v', 'version') - .alias('y', 'year') - .default('y', year, year) - .alias('g', 'generate') - .describe('year', 'The tax filing year') - .describe('only', 'Run only the specified form') - .demandOption(['year']) - .demand(1, 'Missing argument: file. You must supply a YAML input file.') - .strict() - .argv; - -fill(yargs.argv.year + '', path.resolve(yargs.argv._[0]), { - generate: yargs.argv.generate, - only: yargs.argv.only -}).catch((ex) => { - console.error(chalk.red(ex)); -}); diff --git a/bin/init b/bin/init index 629b272..8f56cf2 100755 --- a/bin/init +++ b/bin/init @@ -1,87 +1,39 @@ #!/usr/bin/env node -const os = require('os'); const fs = require('fs'); const path = require('path'); -const https = require('https'); -const chalk = require('chalk'); -const log = require('debug')('irs-tax-filler'); -const fill = require('../src'); -const IRS_URL = 'https://www.irs.gov/pub/irs-pdf'; -const year = `${new Date().getUTCFullYear() - 1}`; -const taxFormsPath = path.join(process.cwd(), 'tax-forms', year); -const files = [ - { name: 'f1040.pdf' }, - { name: 'f1040s3.pdf' }, - { name: 'f8849.pdf' }, // was f1040s6 in 2018 tax year - { name: 'f1116.pdf', as: 'f1116amt.pdf' }, - { name: 'f1116.pdf' }, - { name: 'f6251.pdf' }, - { name: 'f8938.pdf' }, - { name: 'f8965.pdf' } -]; - -async function download(url, dest) { - return new Promise((resolve, reject) => { - if (fs.existsSync(dest)) { - return resolve(); +const afs = fs.promises; + +const { argv } = require('yargs') + .command( + '* [--force]', + 'Initialize a new tax year project.', + (yargs) => { + yargs.alias('h', 'help') + .option( + 'force', { + type: 'boolean', + alias: 'f', + description: 'Force the generation of a new config file.', + default: false + } + ) } - const file = fs.createWriteStream(dest); - log(chalk.grey(`Downloading: ${url} into ${dest}`)); - https.get(url, (response) => { - response.pipe(file); - file.on('finish', () => { - file.close(); - resolve(); - }); - }).on('error', (err) => { - fs.unlink(dest); - throw err; - }); - }); -} - -function makeOutputDirectory() { - return new Promise((resolve, reject) => { - if (fs.existsSync(taxFormsPath)) { - return resolve(); + ); + +async function init({ force }) { + try { + await afs.access('config.yaml', fs.constants.R_OK | fs.constants.W_OK); + if (!force) { + console.error('config.yaml already exists; use --force to overwrite.'); + process.exit(-1); } - fs.mkdir(taxFormsPath, { recursive: true }, (err) => { - if (err) { - return reject(err); - } - return resolve(); - }); - }); -} - -function downloadIRSPDF() { - if (!fs.existsSync(taxFormsPath)) { - fs.mkdirSync(taxFormsPath, { recursive: true }); + } catch (ex) { + // okay, file does not exist } - - const promises = files - .map(file => { - return download( - `${IRS_URL}/${file.name}`, - path.join(taxFormsPath, file.as || file.name) - ); - }); - - return Promise.all(promises); -} - -function generateFormData() { - return fill(year, path.resolve(__dirname, '..', 'example.yaml'), { - generate: true - }); + const config = await afs.readFile(path.join(__dirname, '..', 'config.yaml')); + afs.writeFile('config.yaml', config); } -downloadIRSPDF(taxFormsPath) - .then(makeOutputDirectory) - .then(generateFormData) - .catch(err => { - console.error(chalk.red(err)); - process.exit(-1); - }); +init(argv).catch(console.err); diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..77b6bbc --- /dev/null +++ b/config.yaml @@ -0,0 +1,94 @@ +# Generate the tax documents and then manually copy forms and values at: +# https://www.irs.gov/e-file-providers/before-starting-free-file-fillable-forms +firstName: Joe +middleInitial: A +lastName: Bloggs +ssn: 012-34-5678 +occupation: Programmer +address: + street: 1 Anywhere Road + county: Dublin + city: Dublin + postCode: D1 + countryCode: IE + country: Ireland +employer: + name: Acme Corp. + usaAddress: 16 Acme Boulevard, Suite 400, Phoenix, AZ 12345 + foreignAddress: 1st Floor Acme Building, Dublin, D1, Ireland +financial: + endOfTaxYear: 12/31/2020 + # Single | Married filing jointly | Married filing separately | + # Head of household | Qualifying widow(er) + filingStatus: Married filing separately + # Income from wages. You need to calculate your income. + # IE: This is the pay for USC purposes, plus any employer pension + # contributions (e.g. PRSA contributions December payslip). This value + # is found on ros.ie "Employment Detail Summary" in "Pay for Income Tax" + # field. + income: 100000.00 + # Tax you paid on wages in your own country. + # IE: Get from ros.ie. Go to "Employment Detail Summary" in "Pay for + # Income Tax" and add together the "Income tax paid" and "USC paid". + incomeTax: 25000.00 + # All currency values must be in USD, and need an exchange rate to convert + # from your country income to USD. + averageExchangeRate: 0.893 + averageExchangeRateSource: 'https://www.irs.gov/individuals/international-taxpayers/yearly-average-currency-exchange-rates' + # Except 8938, which needs the treasury exchange rate. + # https://fiscal.treasury.gov/reports-statements/treasury-reporting-rates-exchange/historical.html + treasuryExchangeRate: 0.890 + # 1040 Schedule B and FBAR required + countriesWithBankAccounts: Ireland + # NOTE --------------------------------------------------------------------- + # Fill everything above this line first. Then run `npm run build` once. + # NOTE --------------------------------------------------------------------- + # f1040 line.12.a: Tax (see inst. on page 31). Tax on your taxable income. + # I did not want IRS calculating my taxable income. As a US citizen living + # and paying taxes in a foreign country with a bilateral tax agreement, you + # have 2 choices: 1) "Foreign Earned Income Exclusion" (f2555); 2) "Foreign + # Tax Credit" (f1116 + f1040s3). I went with Foreign Tax Credit. + taxTableUSD: 17660.00 +carryover: + # The cumulative total amount of utilized tax carry over, up to last year. + # i.e. the carryover-general.pdf "Carryover to 2018" column summed. + lastYearTaxCarryOverUSD: 25000 + general: + 2018: + # foreign-taxes is 2017's f1116 line 8 + foreign-taxes: 28000 + # utilized is 2017's f1116 line 22 + utilized: 19000 + alternative-minimum-tax: + # foreign-taxes is f1116 line 8 + # utilized is f1116 line 22 + 2018: + # foreign-taxes is 2017's f1116amt line 8 + foreign-taxes: 28000 + # utilized is 2017's f1116amt line 22 + utilized: 19000 +# List all of your foreign accounts for the FBAR +accounts: + - account: '12345-678' + type: deposit + name: Allied Irish Bank + address: 37 O'Connell Street + city: Dublin, Dublin 1, IRELAND + currency: Euro + value: 12345.67 + opened: false + closed: false + joint: false + tax: false + + - account: '12345-679' + type: custodial + name: Irish Life + address: 37 O'Connell Street + city: Dublin, Dublin 1, IRELAND + currency: Euro + value: 10000.00 + opened: false + closed: false + joint: false + tax: false diff --git a/data/carryover-alternative-minimum-tax.pdf b/data/carryover-alternative-minimum-tax.pdf new file mode 100644 index 0000000..a7a96b8 Binary files /dev/null and b/data/carryover-alternative-minimum-tax.pdf differ diff --git a/data/carryover-general.pdf b/data/carryover-general.pdf new file mode 100644 index 0000000..7aeb79e Binary files /dev/null and b/data/carryover-general.pdf differ diff --git a/data/f1040.pdf b/data/f1040.pdf new file mode 100644 index 0000000..cbfb229 Binary files /dev/null and b/data/f1040.pdf differ diff --git a/data/f1040s3.pdf b/data/f1040s3.pdf new file mode 100644 index 0000000..4a9dd83 Binary files /dev/null and b/data/f1040s3.pdf differ diff --git a/data/f1040sb.pdf b/data/f1040sb.pdf new file mode 100644 index 0000000..8c24769 Binary files /dev/null and b/data/f1040sb.pdf differ diff --git a/data/f1116.pdf b/data/f1116.pdf new file mode 100644 index 0000000..c081113 Binary files /dev/null and b/data/f1116.pdf differ diff --git a/data/f1116amt.pdf b/data/f1116amt.pdf new file mode 100644 index 0000000..bc47661 Binary files /dev/null and b/data/f1116amt.pdf differ diff --git a/data/f6251.pdf b/data/f6251.pdf new file mode 100644 index 0000000..b49207c Binary files /dev/null and b/data/f6251.pdf differ diff --git a/data/f8938.pdf b/data/f8938.pdf new file mode 100644 index 0000000..2ff7416 Binary files /dev/null and b/data/f8938.pdf differ diff --git a/data/f8965.pdf b/data/f8965.pdf new file mode 100644 index 0000000..ecfc094 Binary files /dev/null and b/data/f8965.pdf differ diff --git a/examples/f1040-example-filled.pdf b/examples/f1040-example-filled.pdf new file mode 100644 index 0000000..f5623b9 Binary files /dev/null and b/examples/f1040-example-filled.pdf differ diff --git a/examples/f1040s3-example-filled.pdf b/examples/f1040s3-example-filled.pdf new file mode 100644 index 0000000..c90635e Binary files /dev/null and b/examples/f1040s3-example-filled.pdf differ diff --git a/examples/f1040sb-example-filled.pdf b/examples/f1040sb-example-filled.pdf new file mode 100644 index 0000000..d3aa1bf Binary files /dev/null and b/examples/f1040sb-example-filled.pdf differ diff --git a/examples/f1116-example-filled.pdf b/examples/f1116-example-filled.pdf new file mode 100644 index 0000000..05c09bc Binary files /dev/null and b/examples/f1116-example-filled.pdf differ diff --git a/examples/f1116amt-example-filled.pdf b/examples/f1116amt-example-filled.pdf new file mode 100644 index 0000000..05c09bc Binary files /dev/null and b/examples/f1116amt-example-filled.pdf differ diff --git a/examples/f2555-example-filled.pdf b/examples/f2555-example-filled.pdf new file mode 100644 index 0000000..e597035 Binary files /dev/null and b/examples/f2555-example-filled.pdf differ diff --git a/examples/f6251-example-filled.pdf b/examples/f6251-example-filled.pdf new file mode 100644 index 0000000..b3e71b9 Binary files /dev/null and b/examples/f6251-example-filled.pdf differ diff --git a/examples/f8938-example-filled.pdf b/examples/f8938-example-filled.pdf new file mode 100644 index 0000000..f822c44 Binary files /dev/null and b/examples/f8938-example-filled.pdf differ diff --git a/examples/f8965-example-filled.pdf b/examples/f8965-example-filled.pdf new file mode 100644 index 0000000..e1dfa19 Binary files /dev/null and b/examples/f8965-example-filled.pdf differ diff --git a/make-maps.sh b/make-maps.sh new file mode 100755 index 0000000..eac73a2 --- /dev/null +++ b/make-maps.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + +# ../pdffiller-script/bin/map src/forms/f1040.pdf --out src/maps + +for entry in ./src/forms/* +do + echo "$entry" + ../pdffiller-script/bin/map "$entry" --out src/maps + mv src/maps/*example-filled.pdf examples/ + rm src/maps/*-example-*.* +done + +rm *.fdf diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 2d92272..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3591 +0,0 @@ -{ - "name": "irs-form-filler", - "version": "0.1.0-0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", - "dev": true, - "requires": { - "@babel/types": "^7.9.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", - "dev": true - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", - "requires": { - "any-observable": "^0.3.0" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - } - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arg": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz", - "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.1.0.tgz", - "integrity": "sha512-6vZfo+7W0EOlbSo0nhVKMz4yyssrwiPbBZ8wj1lq8/+l4ZhGZ2U4Md7PspvmijXp1a26D3B7AHEBmIB7aVtaOQ==", - "requires": { - "anymatch": "^3.1.0", - "braces": "^3.0.2", - "fsevents": "^2.0.6", - "glob-parent": "^5.0.0", - "is-binary-path": "^2.1.0", - "is-glob": "^4.0.1", - "normalize-path": "^3.0.0", - "readdirp": "^3.1.1" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "requires": { - "strip-bom": "^4.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", - "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", - "dev": true, - "requires": { - "estraverse": "^5.0.0" - }, - "dependencies": { - "estraverse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "requires": { - "punycode": "^1.3.2" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "fromentries": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", - "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-port": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.0.0.tgz", - "integrity": "sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ==", - "requires": { - "type-fest": "^0.3.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "gray-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", - "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", - "requires": { - "js-yaml": "^3.11.0", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "hasha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", - "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "highlight.js": { - "version": "9.15.10", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", - "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "https-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", - "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "iconv": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/iconv/-/iconv-2.3.5.tgz", - "integrity": "sha512-U5ajDbtDfadp7pvUMC0F2XbkP5vQn9Xrwa6UptePl+cK8EILxapAt3sXers9B3Gxagk+zVjL2ELKuzQvyqOwug==", - "requires": { - "nan": "^2.14.0", - "safer-buffer": "^2.1.2" - } - }, - "iconv-lite": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", - "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "dependencies": { - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "requires": { - "chalk": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - } - }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" - }, - "md-to-pdf": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/md-to-pdf/-/md-to-pdf-2.8.2.tgz", - "integrity": "sha512-jNH4n8ov8rS+UayouiFSvvZj8DDMwc58j6af9VsUi+g3ZZvQwbV8kchd5Ay5TsgqKLIOHOK6icN6geVfapV8Lw==", - "requires": { - "arg": "4.1.1", - "chalk": "2.4.2", - "chokidar": "3.1.0", - "get-port": "5.0.0", - "gray-matter": "4.0.2", - "highlight.js": "9.15.10", - "iconv-lite": "0.5.0", - "listr": "0.14.3", - "marked": "0.7.0", - "puppeteer": "2.0.0", - "serve-handler": "6.1.1" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", - "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.3", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "mkdirp": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", - "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "mock-require": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/mock-require/-/mock-require-3.0.3.tgz", - "integrity": "sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==", - "dev": true, - "requires": { - "get-caller-file": "^1.0.2", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nyc": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.1.tgz", - "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" - } - }, - "yargs-parser": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", - "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pdffiller": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pdffiller/-/pdffiller-0.0.11.tgz", - "integrity": "sha512-VuiWyEgydNVeXX1rAhU+3yimEiZegtuMIBhS54bm8K6WHLzS8OSbGdVefJQGD49mmRlfCxi87JkSjyx468C8kQ==", - "requires": { - "lodash": "~4.17.11", - "utf8-fdf-generator": "0.0.3" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "puppeteer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.0.0.tgz", - "integrity": "sha512-t3MmTWzQxPRP71teU6l0jX47PHXlc4Z52sQv4LJQSZLq1ttkKS2yGM3gaI57uQwZkNaoGd0+HPPMELZkcyhlqA==", - "requires": { - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^3.0.0", - "mime": "^2.0.3", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serve-handler": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.1.tgz", - "integrity": "sha512-LQPvxGia2TYqyMkHKH4jW9jx6jlQUMcWz6gJavZ3+4vsnB+SaWbYTncb9YsK5YBR6SlvyumREZJAzLw8VaFAUQ==", - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-mock": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/simple-mock/-/simple-mock-0.8.0.tgz", - "integrity": "sha1-ScmiI/pu6o4sT9aUj+gwDNillPM=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", - "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", - "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "utf8-fdf-generator": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/utf8-fdf-generator/-/utf8-fdf-generator-0.0.3.tgz", - "integrity": "sha1-OX6PeUDCdtDj1DXsJ7F9Olfo+c4=", - "requires": { - "iconv": "*" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} diff --git a/package.json b/package.json index 3a1d594..914e20d 100644 --- a/package.json +++ b/package.json @@ -1,51 +1,29 @@ { "name": "irs-form-filler", - "version": "0.1.0-0", - "description": "Form fill USA IRS tax documents", - "license": "MIT", - "author": { - "name": "Jamie Peabody", - "email": "jamie.peabody@gmail.com", - "url": "http://mergely.com" - }, - "keywords": [ - "usa", - "irs", - "tax", - "pdf-form-filler" - ], - "main": "bin/fill-tax", - "files": [ - "bin", - "src" - ], - "homepage": "https://github.com/wickedest/irs-form-filler#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/wickedest/irs-form-filler.git" - }, - "bugs": { - "url": "https://github.com/wickedest/irs-form-filler/issues" - }, + "version": "0.1.0", + "description": "", + "main": "index.js", + "keywords": [], + "author": "", + "license": "ISC", "dependencies": { - "chalk": "^2.4.2", + "chalk": "^4.0.0", "debug": "^4.1.1", - "js-yaml": "^3.13.1", - "md-to-pdf": "^2.7.1", - "pdffiller": "^0.0.11", - "yargs": "^13.3.0" + "md-to-pdf": "^3.1.0", + "pdffiller-script": "file:../pdffiller-script", + "yargs": "^15.3.1" }, "devDependencies": { "chai": "^4.2.0", "eslint": "^6.8.0", + "jsdoc-to-markdown": "^5.0.3", "mocha": "^7.1.1", "mock-require": "^3.0.3", "nyc": "^15.0.1", "simple-mock": "^0.8.0" }, "scripts": { - "build": "npm run build:lint", - "build:lint": "eslint .", - "test": "nyc mocha" + "build": "bin/fill config.yaml", + "build:map": "./make-maps.sh" } } diff --git a/src/BaseForm.js b/src/BaseForm.js deleted file mode 100644 index b3c5d93..0000000 --- a/src/BaseForm.js +++ /dev/null @@ -1,192 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const pdfFiller = require('pdffiller'); -const chalk = require('chalk'); -const yaml = require('js-yaml'); -const log = require('debug')('irs-tax-filler'); -const { toCurrency } = require('./utils'); - -class BaseForm { - constructor({ cwd, year }, form) { - this.form = form; - this.pdf = path.join(cwd, 'tax-forms', year, `${form}.pdf`); - this.fields = path.join(cwd, 'data', year, `${form}.json`); - log({ cwd, year, form }); - log('PDF', this.pdf); - log('JSON', this.fields); - } - - async generateData({ cwd, year }) { - if (!fs.existsSync(path.join(cwd, 'data'))) { - fs.mkdirSync(path.join(cwd, 'data')); - } - if (!fs.existsSync(path.join(cwd, 'data', year))) { - fs.mkdirSync(path.join(cwd, 'data', year)); - } - - return new Promise((resolve, reject) => { - if (!fs.existsSync(this.fields)) { - const pdfFile = path.join(cwd, 'data', year, `${this.form}.pdf`); - log('generateFDFTemplate', { - cwd: process.cwd(), - pdfFile - }); - pdfFiller.generateFDFTemplate(this.pdf, null, (err, template) => { - if (err) { - log(err); - return reject(err); - } - Object.keys(template).forEach((key, i) => { - template[key] = `${i}`; - }); - fs.writeFileSync(this.fields, JSON.stringify(template, null, '\t')); - log('wrote new fields file:', this.fields); - - pdfFiller.fillFormWithFlatten(this.pdf, pdfFile, template, false, function(err) { - if (err) { - return reject(err); - } - log('wrote new example file:', pdfFile); - resolve(); - }); - }); - } - resolve(); - }); - } - - async init(ctx, target) { - const form = target || this.form; - // store form data inputs - if (!ctx.userInputs.filled) { - ctx.userInputs.filled = {}; - } - if (!ctx.userInputs.data) { - ctx.userInputs.data = {}; - } - ctx.userInputs.filled[form] = {}; - ctx.userInputs.data[form] = {}; - } - - fill(ctx, options = {}) { - const filleryaml = path.join(ctx.cwd, 'filler', ctx.year, `${this.form}.yaml`); - if (fs.existsSync(filleryaml)) { - this._fillYAML(ctx, filleryaml, options); - } - } - - _fillYAML(ctx, filler, options = {}) { - const fields = require(this.fields); - const inputs = yaml.safeLoad(fs.readFileSync(filler)); - const form = options.form || this.form; - const data = ctx.userInputs.data[form]; - function findField(id) { - for (const field in fields) { - if (fields[field] === id) { - return field; - } - } - } - function fillFormField(ctx, form, entry, fieldId, value) { - const field = findField(fieldId); - // if the entry ends with .whole, give the whole number, otherwise - // give the decimal remainder. - if (entry.endsWith('.whole')) { - value = toCurrency(CURRENCY(value).whole); - } else if (entry.endsWith('.dec')) { - value = CURRENCY(value).dec; - } - // fill the form field - ctx.userInputs.filled[form][field] = value; - // also fill the friendly name - ctx.userInputs.filled[form][entry] = value; - - data[field] = value; - log(chalk.dim(`${form} ${field}:`), chalk.yellow(value)); - } - for (const entry in inputs) { - if (inputs[entry].value) { - // needs to be calculated - const value = xeval(ctx.userInputs, inputs[entry].value); - if (inputs[entry].calculate) { - const fn = xeval2(inputs[entry].calculate); - const { field, fill } = fn(ctx.userInputs, value); - fillFormField(ctx, form, entry, field, fill); - } - } else { - for (const fieldId in inputs[entry]) { - const value = xeval(ctx.userInputs, inputs[entry][fieldId]); - fillFormField(ctx, form, entry, fieldId, value); - } - } - } - } - - async write(ctx) { - const pdfDest = path.join(ctx.cwd, ctx.year, `${this.form}.pdf`); - return this.writeFormFromSource(ctx, this.form, this.pdf, pdfDest); - } - - writeFormFromSource(ctx, form, pdfSource, pdfDest) { - return new Promise((resolve, reject) => { - pdfFiller.fillFormWithFlatten(pdfSource, pdfDest, ctx.userInputs.data[form], false, (err) => { - if (err) { - return reject(err); - } - log('wrote', pdfDest); - resolve(); - }); - }); - } -} - -function CURRENCY(value) { - const simplified = value.replace(',', ''); - const parts = simplified.split('.'); - if (parts.length === 1) { - return { - whole: parts[0], - dec: '00' - }; - } else { - return { - whole: parts[0], - dec: parts[1] - }; - } -} - -function xeval(data, template) { - const validator = { - get(target, key) { - if (typeof target[key] === 'object' && target[key] !== null) { - return new Proxy(target[key], validator); - } else { - if (!Reflect.has(target, key)) { - return ''; - } - return target[key]; - } - } - }; - const proxy = new Proxy(data, validator); - try { - const fn = new Function('ctx', 'return `' + template + '`;'); - return fn.call(global, proxy) || ''; - } catch (ex) { - console.error(`error with template: ${template}`); - throw ex; - } -} - -function xeval2(template) { - try { - const fn = new Function(`return ${template}`); - return fn.call(); - } catch (ex) { - console.error(`error with template: ${template}`); - throw ex; - } -} - -module.exports = BaseForm; diff --git a/src/CarryoverStatement.js b/src/CarryoverStatement.js new file mode 100644 index 0000000..89bc81d --- /dev/null +++ b/src/CarryoverStatement.js @@ -0,0 +1,64 @@ +const fs = require('fs'); +const path = require('path'); +const { mdToPdf } = require('md-to-pdf'); + +class CarryoverStatement { + constructor(options) { + this.type = options.type; + } + + async fill(form, dir = null, options = {}) { + if (!dir) { + return; + } + const lines = [ + `# Foreign Tax Credit Carryover Statement ${form.ctx.financial.endOfTaxYear.slice(-4) - 1}`, + `## ${this.type === 'general' ? 'General' : 'General - Alternative Minimum Tax'}`, + '| Name(s) shown on return | Social Security Number |', + '| ----------------------- | ---------------------- |', + `| ${form.ctx.firstName} ${form.ctx.middleInitial} ${form.ctx.lastName} | ${form.ctx.ssn} |`, + '', + '- [ ] **a** Passive category income', + '- [X] **b** General category income', + '- [ ] **c** Section 901(j) income', + '- [ ] **d** Certain income re-sourced by treaty', + '- [ ] **e** Lump-sum distribution', + '', + `| ${this.type === 'general' ? 'Regular tax' : 'AMT'} | Foreign taxes | Disallowed | Utilized | Carryover |`, + '| ----------- | ------------ | ---------- | -------- | --------- |' + ]; + + // FIXME: this is horrible + const currencyWhole = form.endsWithFuncs['.whole']; + + const year = new Date(Date.parse(form.ctx.financial.endOfTaxYear)).getFullYear(); + const lastYear = year - 1; + const carryovers = form.ctx.carryover[this.type]; + const years = Object.keys(carryovers) + .filter(priorYear => priorYear <= lastYear); + + let total = 0; + for (const priorYear of years) { + const taxes = parseInt(carryovers[priorYear]['foreign-taxes'], 10); + const utilized = parseInt(carryovers[priorYear].utilized, 10); + const carryover = taxes - utilized; + lines.push(`${priorYear} | ${currencyWhole(taxes)} | | ${currencyWhole(utilized)} | ${currencyWhole(carryover)}`); + total += carryover; + } + lines.push(`| | | | **Carryover to ${year}** | ${currencyWhole(total)}`); + + const pdffile = path.join(dir, `carryover-${this.type}.pdf`); + + const pdf = await mdToPdf({ content: lines.join('\n') }, { dest: pdffile }); + if (pdf) { + fs.writeFileSync(pdf.filename, pdf.content); + + if (options.filled) { + options.filled.push(pdf.filename); + } + } + console.log(`wrote ${pdffile}`); + } +} + +module.exports = CarryoverStatement; diff --git a/src/Form1040.js b/src/Form1040.js deleted file mode 100644 index 92f213e..0000000 --- a/src/Form1040.js +++ /dev/null @@ -1,9 +0,0 @@ -const BaseForm = require('./BaseForm'); - -class Form1040 extends BaseForm { - constructor(ctx) { - super(ctx, 'f1040'); - } -} - -module.exports = Form1040; diff --git a/src/Form1040s3.js b/src/Form1040s3.js deleted file mode 100644 index 9bed37d..0000000 --- a/src/Form1040s3.js +++ /dev/null @@ -1,9 +0,0 @@ -const BaseForm = require('./BaseForm'); - -class Form1040s3 extends BaseForm { - constructor(ctx) { - super(ctx, 'f1040s3'); - } -} - -module.exports = Form1040s3; diff --git a/src/Form1040s6.js b/src/Form1040s6.js deleted file mode 100644 index cdcd8d6..0000000 --- a/src/Form1040s6.js +++ /dev/null @@ -1,9 +0,0 @@ -const BaseForm = require('./BaseForm'); - -class Form1040s6 extends BaseForm { - constructor(ctx) { - super(ctx, 'f1040s6'); - } -} - -module.exports = Form1040s6; diff --git a/src/Form1116.js b/src/Form1116.js deleted file mode 100644 index 13a37dd..0000000 --- a/src/Form1116.js +++ /dev/null @@ -1,59 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const mdToPdf = require('md-to-pdf'); -const BaseForm = require('./BaseForm'); -const { toCurrency } = require('./utils'); - -class Form1116 extends BaseForm { - constructor(ctx, form = 'f1116') { - super(ctx, form); - this.type = 'general'; - } - - async write(ctx) { - await super.write(ctx); - this.writeCarryoverStatement(ctx, ctx.userInputs); - } - - async writeCarryoverStatement({ cwd, year }, ctx) { - const lines = [ - '# Foreign Tax Credit Carryover Statement 2017', - `## ${this.type === 'general' ? 'General' : 'General - Alternative Minimum Tax'}`, - '| Name(s) shown on return | Social Security Number |', - '| ----------------------- | ---------------------- |', - `| ${ctx.firstName} ${ctx.middleInitial} ${ctx.lastName} | ${ctx.ssn} |`, - '', - '- [ ] **a** Passive category income', - '- [X] **b** General category income', - '- [ ] **c** Section 901(j) income', - '- [ ] **d** Certain income re-sourced by treaty', - '- [ ] **e** Lump-sum distribution', - '', - `| ${this.type === 'general' ? 'Regular tax' : 'AMT'} | Foreign taxes | Disallowed | Utilized | Carryover |`, - '| ----------- | ------------ | ---------- | -------- | --------- |' - ]; - - const lastYear = `${year - 1}`; - const carryovers = ctx.carryover[this.type]; - const years = Object.keys(carryovers) - .filter(priorYear => priorYear <= lastYear); - let total = 0; - for (const priorYear of years) { - const taxes = parseInt(carryovers[priorYear]['foreign-taxes'], 10); - const utilized = parseInt(carryovers[priorYear].utilized, 10); - const carryover = taxes - utilized; - lines.push(`${priorYear} | ${toCurrency(taxes)} | | ${toCurrency(utilized)} | ${toCurrency(carryover)}`); - total += carryover; - } - lines.push(`| | | | **Carryover to ${year}** | ${toCurrency(total)}`); - - const mdfile = path.join(cwd, year, `carryover-${this.type}.md`); - const pdffile = path.join(cwd, year, `carryover-${this.type}.pdf`); - fs.writeFileSync(mdfile, lines.join('\n'), 'utf-8'); - await mdToPdf(mdfile, { dest: pdffile }); - console.log(`wrote ${pdffile}`); - fs.unlinkSync(mdfile); - } -} - -module.exports = Form1116; diff --git a/src/Form1116amt.js b/src/Form1116amt.js deleted file mode 100644 index 4d22e5b..0000000 --- a/src/Form1116amt.js +++ /dev/null @@ -1,10 +0,0 @@ -const Form1116 = require('./Form1116'); - -class Form1116amt extends Form1116 { - constructor(ctx) { - super(ctx, 'f1116amt'); - this.type = 'alternative-minimum-tax'; - } -} - -module.exports = Form1116amt; diff --git a/src/Form6251.js b/src/Form6251.js deleted file mode 100644 index 656cf54..0000000 --- a/src/Form6251.js +++ /dev/null @@ -1,9 +0,0 @@ -const BaseForm = require('./BaseForm'); - -class Form6251 extends BaseForm { - constructor(ctx) { - super(ctx, 'f6251'); - } -} - -module.exports = Form6251; diff --git a/src/Form8938.js b/src/Form8938.js deleted file mode 100644 index 44fdfcf..0000000 --- a/src/Form8938.js +++ /dev/null @@ -1,95 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const PDF = require('./pdf.js'); -const BaseForm = require('./BaseForm'); - -class Form8938 extends BaseForm { - constructor(ctx) { - super(ctx, 'f8938'); - } - - async init(ctx) { - await super.init(ctx); - - // form 8938 has two pages, but we're going to make additional pages, - // starting at page 3. - const remainder = ctx.userInputs.accounts.slice(1); - for (let i = 0; i < remainder.length; ++i) { - const form = `f8938-${i + 3}`; - await super.init(ctx, form); - } - - // Take clean page 3 from the main f8938 document and make f8938-contd - return PDF.cat({ - source: this.pdf, - pages: '3', - out: path.join(ctx.cwd, ctx.year, 'f8938-contd.pdf') - }); - } - - fill(ctx, options = {}) { - ctx.userInputs.account = ctx.userInputs.accounts[0]; - super.fill(ctx, options); - // form 8938 has two pages, but we're going to make additional pages, - // starting at page 3. - const remainder = ctx.userInputs.accounts.slice(1); - let i = 0; - for (const account of remainder) { - const form = `${this.form}-${i + 3}`; - // needed for page numbers - ctx.userInputs.page = i + 3; - // needed for individual accounts - ctx.userInputs.account = account; - super.fill(ctx, { form }); - i += 1; - } - } - - async write(ctx) { - await super.write(ctx); - - const { cwd, year, userInputs } = ctx; - const unlink = [ - path.join(cwd, year, 'f8938-contd.pdf'), - path.join(cwd, year, 'f8938-main.pdf') - ]; - - // Take pages 1-2 from the main f8938 document and create: f8938-main.pdf - await PDF.cat({ - source: path.join(cwd, year, 'f8938.pdf'), - pages: '1-2', - out: path.join(cwd, year, 'f8938-main.pdf') - }); - - // clean out the original before writing - fs.unlinkSync(path.join(cwd, year, 'f8938.pdf')); - - // main is pages 1 and 2, has the first account, slice it off and generate - // the remainder - const remainder = userInputs.accounts.slice(1); - // this writes f8938-3.pdf, f8938-4.pdf, etc. - for (let i = 0; i < remainder.length; ++i) { - unlink.push(path.join(cwd, year, `f8938-${i + 3}.pdf`)); - await this.writeFormFromSource( - ctx, `f8938-${i + 3}`, - path.join(cwd, year, 'f8938-contd.pdf'), - path.join(cwd, year, `f8938-${i + 3}.pdf`) - ); - i += 1; - } - - // join f8938-3.pdf, f8938-4.pdf, etc. - const parts = unlink.filter(a => !a.includes('f8938-contd.pdf')); - const dest = path.join(cwd, year, 'f8938.pdf'); - parts.forEach(a => console.log('joining', a, 'into', dest)); - await PDF.join({ - sources: parts, - out: dest - }); - - // cleanup - unlink.forEach(fs.unlinkSync); - } -} - -module.exports = Form8938; diff --git a/src/Form8965.js b/src/Form8965.js deleted file mode 100644 index b394712..0000000 --- a/src/Form8965.js +++ /dev/null @@ -1,9 +0,0 @@ -const BaseForm = require('./BaseForm'); - -class Form8965 extends BaseForm { - constructor(ctx) { - super(ctx, 'f8965'); - } -} - -module.exports = Form8965; diff --git a/src/FormFiller.js b/src/FormFiller.js new file mode 100644 index 0000000..5e1bdbd --- /dev/null +++ b/src/FormFiller.js @@ -0,0 +1,105 @@ +const fs = require('fs'); +const path = require('path'); + +class FormFiller { + constructor({ name, map, script, pdf }) { + this.name = name; + this.map = map; + this.script = script; + this.pdf = pdf; + } + + static create(options) { + if (![ 'f8938' ].includes(options.name)) { + return new FormFiller(options); + } else { + return new FormFiller8938(options); + } + } + + async fill(form, dir = null, options = {}) { + const formName = this.name; + await form.load(this.pdf, this.map); + await form.fill(this.script, options); + if (dir) { + const pdffile = path.join(dir, `${formName}.pdf`); + await form.save(pdffile); + console.log(`wrote ${pdffile}`); + + if (options.filled) { + options.filled.push(pdffile); + } + } + } +} + +class FormFiller8938 extends FormFiller { + constructor(options) { + super(options); + } + + async fill(form, dir = null, options = {}) { + const parts = []; + const unlink = []; + + await form.load(this.pdf, this.map); + + // Take a clean page 3 from the original document + let contd; + if (dir) { + contd = path.join(dir, `f8938-contd.pdf`); + await form.slice(3, 4, contd); + unlink.push(contd); + } + + // fill pages 1-2 + form.ctx.page = 1; + form.ctx.account = form.ctx.accounts[0]; + await super.fill(form, dir); + + // slice pages 1-2 out of written f8938.pdf + if (dir) { + form.setSourcePDF(path.join(dir, 'f8938.pdf')); + const pages1and2 = path.join(dir, 'f8938-pages1-2.pdf'); + await form.slice(1, 3, pages1and2); + parts.push(pages1and2); + unlink.push(pages1and2); + } + + // form 8938 has two pages, but we're going to make additional pages, + // starting at page 3. + const accounts = form.ctx.accounts.slice(1); + let i = 0; + for (const account of accounts) { + form.ctx.page = i + 3; + form.ctx.account = account; + + const formName = `${this.name}-${i + 3}`; + form.setFormName(formName); + await form.fill(this.script); + + if (dir) { + form.setSourcePDF(contd); + const part = path.join(dir, `${formName}.pdf`); + await form.save(part); + parts.push(part); + unlink.push(part); + } + + i += 1; + } + + if (dir) { + const pdffile = path.join(dir, 'f8938.pdf'); + await form.join(parts, pdffile); + + if (options.filled) { + options.filled.push(pdffile); + } + } + + unlink.forEach(fs.unlinkSync); + } +} + +module.exports = FormFiller; diff --git a/src/forms.js b/src/forms.js new file mode 100644 index 0000000..13603b6 --- /dev/null +++ b/src/forms.js @@ -0,0 +1,52 @@ +const fs = require('fs'); +const path = require('path'); + +const { promises: afs } = fs; + +const fillOrder = [ + 'f1116', + 'f1116amt', + 'f1040s3', + 'f1040', + 'f6251', + 'f8965', + 'f8938' +]; + +function sortByFillOrder(a, b) { + const ia = fillOrder.indexOf(a); + const ib = fillOrder.indexOf(b); + if (ia >= 0 && ib >= 0) { + return ia - ib; // e.g. 0-2 = -2 + } + if (ia >= 0) { + return -1; + } + return 1; +} + +async function getForms() { + return Promise.all([ + afs.readdir(path.join(__dirname, 'maps')), + afs.readdir(path.join(__dirname, 'scripts')), + afs.readdir(path.join(__dirname, 'forms')) + ]) + .then(([ maps, scripts, forms ]) => { + const result = {}; + + const ordered = forms + .map(a => a.replace('.pdf', '')) + .sort(sortByFillOrder); + + for (const formId of ordered) { + result[formId] = { + map: path.join(__dirname, 'maps', `${formId}-map.yaml`), + script: path.join(__dirname, 'scripts', `${formId}.yaml`), + pdf: path.join(__dirname, 'forms', `${formId}.pdf`) + } + } + return result; + }); +} + +module.exports = getForms; diff --git a/src/forms/f1040.pdf b/src/forms/f1040.pdf new file mode 100644 index 0000000..58e812b Binary files /dev/null and b/src/forms/f1040.pdf differ diff --git a/src/forms/f1040s3.pdf b/src/forms/f1040s3.pdf new file mode 100644 index 0000000..944ca30 Binary files /dev/null and b/src/forms/f1040s3.pdf differ diff --git a/src/forms/f1040sb.pdf b/src/forms/f1040sb.pdf new file mode 100644 index 0000000..5a2ce27 Binary files /dev/null and b/src/forms/f1040sb.pdf differ diff --git a/src/forms/f1116.pdf b/src/forms/f1116.pdf new file mode 100644 index 0000000..e7ead29 Binary files /dev/null and b/src/forms/f1116.pdf differ diff --git a/src/forms/f1116amt.pdf b/src/forms/f1116amt.pdf new file mode 100644 index 0000000..e7ead29 Binary files /dev/null and b/src/forms/f1116amt.pdf differ diff --git a/src/forms/f6251.pdf b/src/forms/f6251.pdf new file mode 100644 index 0000000..8c44ab4 Binary files /dev/null and b/src/forms/f6251.pdf differ diff --git a/src/forms/f8938.pdf b/src/forms/f8938.pdf new file mode 100644 index 0000000..0ca270c Binary files /dev/null and b/src/forms/f8938.pdf differ diff --git a/src/forms/f8965.pdf b/src/forms/f8965.pdf new file mode 100644 index 0000000..dbab785 Binary files /dev/null and b/src/forms/f8965.pdf differ diff --git a/src/index.js b/src/index.js old mode 100755 new mode 100644 index fe3ac66..8af26c3 --- a/src/index.js +++ b/src/index.js @@ -1,130 +1,55 @@ -#!/usr/bin/env node - -const os = require('os'); const fs = require('fs'); const path = require('path'); -const yaml = require('js-yaml'); const chalk = require('chalk'); -const log = require('debug')('irs-tax-filler'); -const BaseForm = require('./BaseForm'); -const Form1116 = require('./Form1116'); -const Form1116amt = require('./Form1116amt'); -const Form1040s3 = require('./Form1040s3'); -const Form1040 = require('./Form1040'); -const Form8965 = require('./Form8965'); -const Form8938 = require('./Form8938'); -const Form6251 = require('./Form6251'); -const PDF = require('./pdf.js'); - -const formMap = { - f1116: Form1116, - f1116amt: Form1116amt, - f1040s3: Form1040s3, - f1040: Form1040, - f6251: Form6251, - f8965: Form8965, - f8938: Form8938 -}; - -const formsOrder = Object.keys(formMap); - -function sortForms(a, b) { - const oa = formsOrder.indexOf(a); - const ob = formsOrder.indexOf(b); - return (oa > ob) ? 1 : (oa < ob)? -1 : 0; -} - -async function fill(year, inputs, options = {}) { - const cwd = path.resolve(process.cwd()); - const tmpdir = os.tmpdir(); - - process.chdir(tmpdir); - - const ctx = { - cwd, - year - }; - - const forms = fs.readdirSync(path.join(cwd, 'tax-forms', year)) - .map(a => path.basename(a, '.pdf')) - .filter(a => !options.only || options.only.includes(a)) - .sort(sortForms) - .map(a => { - if (formMap[a]) { - return new formMap[a](ctx); - } - // else, unknown form - return new BaseForm({ cwd, year }, a); +const { Form } = require('pdffiller-script'); +const getForms = require('./forms'); +const FormFiller = require('./FormFiller'); +const CarryoverStatement = require('./CarryoverStatement'); + +const afs = fs.promises; + +async function fill({ config, only, output, debug }) { + const forms = await getForms(); + const formFillers = {}; + for (const formId in forms) { + formFillers[formId] = FormFiller.create({ + name: formId, + ...forms[formId] }); - - // generate form data for building forms - if (options.generate) { - log(`Generating form data into: ${path.join(cwd, 'data')}`); - for (const form of forms) { - form.generateData(ctx); - } - if (!fs.existsSync(path.join(cwd, 'example.yaml'))) { - const inputData = fs.readFileSync(inputs); - console.log(chalk.yellow('Wrote: example.yaml. Modify this file as per the README.md instructions.')); - fs.writeFileSync(path.join(cwd, 'example.yaml'), inputData); - } - console.log(chalk.yellow(`Original IRS forms are in: ./tax-forms/${year}`)); - console.log(chalk.yellow(`Working IRS forms are in: ./data/${year}`)); - console.log(chalk.yellow('Modify example.yaml as per the README.md instructions. Then run:')); - console.log(chalk.cyan('irs-tax-filler fill-tax example.yaml')); - return; - } - - if (!fs.existsSync(path.join(cwd, year))) { - fs.mkdirSync(path.join(cwd, year)); } - // sort accounts by institution name and account number - const userInputs = yaml.safeLoad(fs.readFileSync(inputs)); - userInputs.accounts.sort((a, b) => a.name > b.name ? 1 : a.name < b.name ? -1 : - a.account > b.account ? 1 : a.account < b.account ? -1 : 0); + ensureDirectory(output); - // used to populate first account on f8938.js - userInputs.account = userInputs.accounts[0]; - ctx.userInputs = userInputs; + const form = new Form(); + await form.init(config); - // init forms - for (const form of forms) { - await form.init(ctx); + // 1st pass + const filled = []; + for (const formId in forms) { + await formFillers[formId].fill(form, null, { debug, filled }); } - - // fill forms (1st pass) - for (const form of forms) { - form.fill(ctx); + // 2nd pass + for (const formId in forms) { + const save = only ? only.includes(formId) : true; + await formFillers[formId].fill(form, save ? output : null, { debug, filled }); } - // fill forms (2nd pass) - for (const form of forms) { - form.fill(ctx, { log: true, errors: true }); - } + if (!only) { + const gcos = new CarryoverStatement({ type: 'general' }); + await gcos.fill(form, output, { filled }); - // write - for (const form of forms) { - await form.write(ctx); + const acos = new CarryoverStatement({ type: 'alternative-minimum-tax' }); + await acos.fill(form, output, { filled }); } +} - const outputOrder = [ - 'f1040', - 'f1040s3', - 'f8849', - 'f1116', - 'f6251', - 'f1116amt', - 'f8965', - 'f8938', - 'carryover-general', - 'carryover-alternative-minimum-tax' - ]; - - await PDF.join({ - sources: outputOrder.map(a => path.join(ctx.cwd, ctx.year, `${a}.pdf`)), - out: path.join(ctx.cwd, ctx.year, `1040-${year}.pdf`) - }); +function ensureDirectory(dir) { + // log('ensure dir:', dir); + return afs.access(dir, fs.constants.R_OK | fs.constants.W_OK) + .catch(() => { + // log('mkdir:', dir); + afs.mkdir(dir); + }); } module.exports = fill; diff --git a/src/maps/f1040-map.yaml b/src/maps/f1040-map.yaml new file mode 100644 index 0000000..d4de214 --- /dev/null +++ b/src/maps/f1040-map.yaml @@ -0,0 +1,121 @@ +'topmostSubform[0].Page1[0].FilingStatus[0].c1_01[0]': '0' +'topmostSubform[0].Page1[0].FilingStatus[0].c1_01[1]': '1' +'topmostSubform[0].Page1[0].FilingStatus[0].c1_01[2]': '2' +'topmostSubform[0].Page1[0].FilingStatus[0].c1_01[3]': '3' +'topmostSubform[0].Page1[0].FilingStatus[0].c1_01[4]': '4' +'topmostSubform[0].Page1[0].FilingStatus[0].f1_01[0]': '5' +'topmostSubform[0].Page1[0].f1_02[0]': '6' +'topmostSubform[0].Page1[0].f1_03[0]': '7' +'topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_04[0]': '8' +'topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_05[0]': '9' +'topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_06[0]': '10' +'topmostSubform[0].Page1[0].ReadOrderControl[0].f1_07[0]': '11' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_08[0]': '12' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_09[0]': '13' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_10[0]': '14' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_11[0]': '15' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_12[0]': '16' +'topmostSubform[0].Page1[0].ReadOrderControl[0].Address[0].f1_13[0]': '17' +'topmostSubform[0].Page1[0].ReadOrderControl[1].PresidentialElection[0].c1_02[0]': '18' +'topmostSubform[0].Page1[0].ReadOrderControl[1].PresidentialElection[0].c1_03[0]': '19' +'topmostSubform[0].Page1[0].ReadOrderControl[1].StandardDeduction[0].c1_04[0]': '20' +'topmostSubform[0].Page1[0].ReadOrderControl[1].StandardDeduction[0].c1_05[0]': '21' +'topmostSubform[0].Page1[0].ReadOrderControl[1].StandardDeduction[0].c1_06[0]': '22' +'topmostSubform[0].Page1[0].ReadOrderControl[1].AgeBlindness[0].c1_07[0]': '23' +'topmostSubform[0].Page1[0].ReadOrderControl[1].AgeBlindness[0].c1_08[0]': '24' +'topmostSubform[0].Page1[0].ReadOrderControl[1].AgeBlindness[0].c1_09[0]': '25' +'topmostSubform[0].Page1[0].ReadOrderControl[1].AgeBlindness[0].c1_10[0]': '26' +'topmostSubform[0].Page1[0].ReadOrderControl[1]': '27' +'topmostSubform[0].Page1[0].IfMoreThanFour[0].c1_11[0]': '28' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row1[0].f1_14[0]': '29' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row1[0].f1_15[0]': '30' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row1[0].f1_16[0]': '31' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row1[0].c1_12[0]': '32' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row1[0].c1_13[0]': '33' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row2[0].f1_17[0]': '34' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row2[0].f1_18[0]': '35' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row2[0].f1_19[0]': '36' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row2[0].c1_14[0]': '37' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row2[0].c1_15[0]': '38' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row3[0].f1_20[0]': '39' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row3[0].f1_21[0]': '40' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row3[0].f1_22[0]': '41' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row3[0].c1_16[0]': '42' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row3[0].c1_17[0]': '43' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row4[0].f1_23[0]': '44' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row4[0].f1_24[0]': '45' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row4[0].f1_25[0]': '46' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row4[0].c1_18[0]': '47' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0].Row4[0].c1_19[0]': '48' +'topmostSubform[0].Page1[0].Dependents[0].Table_Dependents[0]': '49' +'topmostSubform[0].Page1[0].Dependents[0]': '50' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_26[0]': '51' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_27[0]': '52' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_28[0]': '53' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_29[0]': '54' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_30[0]': '55' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_31[0]': '56' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_32[0]': '57' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_33[0]': '58' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_34[0]': '59' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_35[0]': '60' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_36[0]': '61' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].c1_20[0]': '62' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_37[0]': '63' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_38[0]': '64' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_39[0]': '65' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_40[0]': '66' +'topmostSubform[0].Page1[0].ReadOrderControl_Lns1-8b[0].f1_41[0]': '67' +'topmostSubform[0].Page1[0].f1_42[0]': '68' +'topmostSubform[0].Page1[0].f1_43[0]': '69' +'topmostSubform[0].Page1[0].f1_44[0]': '70' +'topmostSubform[0].Page1[0].f1_45[0]': '71' +'topmostSubform[0].Page2[0].Lines12a-12b_ReadOrder[0].c2_01[0]': '72' +'topmostSubform[0].Page2[0].Lines12a-12b_ReadOrder[0].c2_02[0]': '73' +'topmostSubform[0].Page2[0].Lines12a-12b_ReadOrder[0].c2_03[0]': '74' +'topmostSubform[0].Page2[0].Lines12a-12b_ReadOrder[0].f2_01[0]': '75' +'topmostSubform[0].Page2[0].Lines12a-12b_ReadOrder[0].f2_02[0]': '76' +'topmostSubform[0].Page2[0].f2_03[0]': '77' +'topmostSubform[0].Page2[0].Lines13a-13b_ReadOrder[0].f2_04[0]': '78' +'topmostSubform[0].Page2[0].f2_05[0]': '79' +'topmostSubform[0].Page2[0].f2_06[0]': '80' +'topmostSubform[0].Page2[0].f2_07[0]': '81' +'topmostSubform[0].Page2[0].f2_08[0]': '82' +'topmostSubform[0].Page2[0].f2_09[0]': '83' +'topmostSubform[0].Page2[0].Line18_ReadOrder[0].f2_10[0]': '84' +'topmostSubform[0].Page2[0].Line18_ReadOrder[0].f2_11[0]': '85' +'topmostSubform[0].Page2[0].Line18_ReadOrder[0].f2_12[0]': '86' +'topmostSubform[0].Page2[0].Line18_ReadOrder[0].f2_13[0]': '87' +'topmostSubform[0].Page2[0].f2_14[0]': '88' +'topmostSubform[0].Page2[0].f2_15[0]': '89' +'topmostSubform[0].Page2[0].f2_16[0]': '90' +'topmostSubform[0].Page2[0].c2_04[0]': '91' +'topmostSubform[0].Page2[0].f2_17[0]': '92' +'topmostSubform[0].Page2[0].RoutingNo[0].f2_18[0]': '93' +'topmostSubform[0].Page2[0].c2_05[0]': '94' +'topmostSubform[0].Page2[0].c2_05[1]': '95' +'topmostSubform[0].Page2[0].AccountNo[0].f2_19[0]': '96' +'topmostSubform[0].Page2[0].f2_20[0]': '97' +'topmostSubform[0].Page2[0].f2_21[0]': '98' +'topmostSubform[0].Page2[0].f2_22[0]': '99' +'topmostSubform[0].Page2[0].ThirdPartyDesignee[0].c2_06[0]': '100' +'topmostSubform[0].Page2[0].ThirdPartyDesignee[0].c2_06[1]': '101' +'topmostSubform[0].Page2[0].ThirdPartyDesignee[0].f2_23[0]': '102' +'topmostSubform[0].Page2[0].ThirdPartyDesignee[0].f2_24[0]': '103' +'topmostSubform[0].Page2[0].ThirdPartyDesignee[0].f2_25[0]': '104' +'topmostSubform[0].Page2[0].Signatures[0].f2_26[0]': '105' +'topmostSubform[0].Page2[0].Signatures[0].f2_27[0]': '106' +'topmostSubform[0].Page2[0].Signatures[0].f2_28[0]': '107' +'topmostSubform[0].Page2[0].Signatures[0].f2_29[0]': '108' +'topmostSubform[0].Page2[0].Signatures[0].f2_30[0]': '109' +'topmostSubform[0].Page2[0].Signatures[0].f2_31[0]': '110' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_32[0]': '111' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_33[0]': '112' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].CheckIf[0].c2_07[0]': '113' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].CheckIf[0].c2_07[1]': '114' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_34[0]': '115' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_35[0]': '116' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_36[0]': '117' +'topmostSubform[0].Page2[0].PaidPreparer[0].Preparer[0].f2_37[0]': '118' +'topmostSubform[0].Page2[0].PaidPreparer[0]': '119' +'topmostSubform[0]': '120' diff --git a/src/maps/f1040s1-map.yaml b/src/maps/f1040s1-map.yaml new file mode 100644 index 0000000..14fca39 --- /dev/null +++ b/src/maps/f1040s1-map.yaml @@ -0,0 +1,32 @@ +'form1[0].Page1[0].f1_01[0]': '0' +'form1[0].Page1[0].f1_02[0]': '1' +'form1[0].Page1[0].c1_1[0]': '2' +'form1[0].Page1[0].c1_1[1]': '3' +'form1[0].Page1[0].f1_03[0]': '4' +'form1[0].Page1[0].f1_04[0]': '5' +'form1[0].Page1[0].f1_05[0]': '6' +'form1[0].Page1[0].f1_06[0]': '7' +'form1[0].Page1[0].f1_07[0]': '8' +'form1[0].Page1[0].f1_08[0]': '9' +'form1[0].Page1[0].f1_09[0]': '10' +'form1[0].Page1[0].f1_10[0]': '11' +'form1[0].Page1[0].Line8[0].f1_11[0]': '12' +'form1[0].Page1[0].Line8[0].f1_12[0]': '13' +'form1[0].Page1[0].f1_13[0]': '14' +'form1[0].Page1[0].f1_14[0]': '15' +'form1[0].Page1[0].f1_15[0]': '16' +'form1[0].Page1[0].f1_16[0]': '17' +'form1[0].Page1[0].f1_17[0]': '18' +'form1[0].Page1[0].f1_18[0]': '19' +'form1[0].Page1[0].f1_19[0]': '20' +'form1[0].Page1[0].f1_20[0]': '21' +'form1[0].Page1[0].f1_21[0]': '22' +'form1[0].Page1[0].f1_22[0]': '23' +'form1[0].Page1[0].f1_23[0]': '24' +'form1[0].Page1[0].Line18b_CombField[0].f1_24[0]': '25' +'form1[0].Page1[0].f1_25[0]': '26' +'form1[0].Page1[0].f1_26[0]': '27' +'form1[0].Page1[0].f1_27[0]': '28' +'form1[0].Page1[0].f1_28[0]': '29' +'form1[0].Page1[0].f1_29[0]': '30' +'form1[0]': '31' diff --git a/src/maps/f1040s3-map.yaml b/src/maps/f1040s3-map.yaml new file mode 100644 index 0000000..ea3da38 --- /dev/null +++ b/src/maps/f1040s3-map.yaml @@ -0,0 +1,26 @@ +'form1[0].Page1[0].f1_01[0]': '0' +'form1[0].Page1[0].f1_02[0]': '1' +'form1[0].Page1[0].f1_03[0]': '2' +'form1[0].Page1[0].f1_04[0]': '3' +'form1[0].Page1[0].f1_05[0]': '4' +'form1[0].Page1[0].f1_06[0]': '5' +'form1[0].Page1[0].f1_07[0]': '6' +'form1[0].Page1[0].c1_1[0]': '7' +'form1[0].Page1[0].c1_2[0]': '8' +'form1[0].Page1[0].c1_3[0]': '9' +'form1[0].Page1[0].f1_08[0]': '10' +'form1[0].Page1[0].f1_09[0]': '11' +'form1[0].Page1[0].f1_10[0]': '12' +'form1[0].Page1[0].f1_11[0]': '13' +'form1[0].Page1[0].f1_12[0]': '14' +'form1[0].Page1[0].f1_13[0]': '15' +'form1[0].Page1[0].f1_14[0]': '16' +'form1[0].Page1[0].f1_15[0]': '17' +'form1[0].Page1[0].c1_4[0]': '18' +'form1[0].Page1[0].c1_5[0]': '19' +'form1[0].Page1[0].c1_6[0]': '20' +'form1[0].Page1[0].c1_7[0]': '21' +'form1[0].Page1[0].f1_16[0]': '22' +'form1[0].Page1[0].f1_17[0]': '23' +'form1[0].Page1[0].f1_18[0]': '24' +'form1[0]': '25' diff --git a/src/maps/f1040sb-map.yaml b/src/maps/f1040sb-map.yaml new file mode 100644 index 0000000..01138e8 --- /dev/null +++ b/src/maps/f1040sb-map.yaml @@ -0,0 +1,74 @@ +'topmostSubform[0].Page1[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].f1_3[0]': '2' +'topmostSubform[0].Page1[0].f1_4[0]': '3' +'topmostSubform[0].Page1[0].f1_5[0]': '4' +'topmostSubform[0].Page1[0].f1_6[0]': '5' +'topmostSubform[0].Page1[0].f1_7[0]': '6' +'topmostSubform[0].Page1[0].f1_8[0]': '7' +'topmostSubform[0].Page1[0].f1_9[0]': '8' +'topmostSubform[0].Page1[0].f1_10[0]': '9' +'topmostSubform[0].Page1[0].f1_11[0]': '10' +'topmostSubform[0].Page1[0].f1_12[0]': '11' +'topmostSubform[0].Page1[0].f1_13[0]': '12' +'topmostSubform[0].Page1[0].f1_14[0]': '13' +'topmostSubform[0].Page1[0].f1_15[0]': '14' +'topmostSubform[0].Page1[0].f1_16[0]': '15' +'topmostSubform[0].Page1[0].f1_17[0]': '16' +'topmostSubform[0].Page1[0].f1_18[0]': '17' +'topmostSubform[0].Page1[0].f1_19[0]': '18' +'topmostSubform[0].Page1[0].f1_20[0]': '19' +'topmostSubform[0].Page1[0].f1_21[0]': '20' +'topmostSubform[0].Page1[0].f1_22[0]': '21' +'topmostSubform[0].Page1[0].f1_23[0]': '22' +'topmostSubform[0].Page1[0].f1_24[0]': '23' +'topmostSubform[0].Page1[0].f1_25[0]': '24' +'topmostSubform[0].Page1[0].f1_26[0]': '25' +'topmostSubform[0].Page1[0].f1_27[0]': '26' +'topmostSubform[0].Page1[0].f1_28[0]': '27' +'topmostSubform[0].Page1[0].f1_29[0]': '28' +'topmostSubform[0].Page1[0].f1_30[0]': '29' +'topmostSubform[0].Page1[0].f1_31[0]': '30' +'topmostSubform[0].Page1[0].f1_32[0]': '31' +'topmostSubform[0].Page1[0].f1_33[0]': '32' +'topmostSubform[0].Page1[0].f1_34[0]': '33' +'topmostSubform[0].Page1[0].f1_35[0]': '34' +'topmostSubform[0].Page1[0].f1_36[0]': '35' +'topmostSubform[0].Page1[0].f1_37[0]': '36' +'topmostSubform[0].Page1[0].f1_38[0]': '37' +'topmostSubform[0].Page1[0].f1_39[0]': '38' +'topmostSubform[0].Page1[0].f1_40[0]': '39' +'topmostSubform[0].Page1[0].f1_41[0]': '40' +'topmostSubform[0].Page1[0].f1_42[0]': '41' +'topmostSubform[0].Page1[0].f1_43[0]': '42' +'topmostSubform[0].Page1[0].f1_44[0]': '43' +'topmostSubform[0].Page1[0].f1_45[0]': '44' +'topmostSubform[0].Page1[0].f1_46[0]': '45' +'topmostSubform[0].Page1[0].f1_47[0]': '46' +'topmostSubform[0].Page1[0].f1_48[0]': '47' +'topmostSubform[0].Page1[0].f1_49[0]': '48' +'topmostSubform[0].Page1[0].f1_50[0]': '49' +'topmostSubform[0].Page1[0].f1_51[0]': '50' +'topmostSubform[0].Page1[0].f1_52[0]': '51' +'topmostSubform[0].Page1[0].f1_53[0]': '52' +'topmostSubform[0].Page1[0].f1_54[0]': '53' +'topmostSubform[0].Page1[0].f1_55[0]': '54' +'topmostSubform[0].Page1[0].f1_56[0]': '55' +'topmostSubform[0].Page1[0].f1_57[0]': '56' +'topmostSubform[0].Page1[0].f1_58[0]': '57' +'topmostSubform[0].Page1[0].f1_59[0]': '58' +'topmostSubform[0].Page1[0].f1_60[0]': '59' +'topmostSubform[0].Page1[0].f1_61[0]': '60' +'topmostSubform[0].Page1[0].f1_62[0]': '61' +'topmostSubform[0].Page1[0].f1_63[0]': '62' +'topmostSubform[0].Page1[0].f1_64[0]': '63' +'topmostSubform[0].Page1[0].f1_65[0]': '64' +'topmostSubform[0].Page1[0].f1_66[0]': '65' +'topmostSubform[0].Page1[0].c1_1[0]': '66' +'topmostSubform[0].Page1[0].c1_1[1]': '67' +'topmostSubform[0].Page1[0].c1_2[0]': '68' +'topmostSubform[0].Page1[0].c1_2[1]': '69' +'topmostSubform[0].Page1[0].f1_67[0]': '70' +'topmostSubform[0].Page1[0].c1_3[0]': '71' +'topmostSubform[0].Page1[0].c1_3[1]': '72' +'topmostSubform[0]': '73' diff --git a/src/maps/f1116-map.yaml b/src/maps/f1116-map.yaml new file mode 100644 index 0000000..d6a1c39 --- /dev/null +++ b/src/maps/f1116-map.yaml @@ -0,0 +1,124 @@ +'topmostSubform[0].Page1[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].c1_1[0]': '2' +'topmostSubform[0].Page1[0].c1_1[1]': '3' +'topmostSubform[0].Page1[0].c1_1[2]': '4' +'topmostSubform[0].Page1[0].c1_1[3]': '5' +'topmostSubform[0].Page1[0].c1_1[4]': '6' +'topmostSubform[0].Page1[0].c1_1[5]': '7' +'topmostSubform[0].Page1[0].c1_1[6]': '8' +'topmostSubform[0].Page1[0].p1-t3[0]': '9' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_3[0]': '10' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_4[0]': '11' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_5[0]': '12' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_6[0]': '13' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_7[0]': '14' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_8[0]': '15' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[1].f1_9[0]': '16' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[2].f1_10[0]': '17' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[3].f1_11[0]': '18' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[5].f1_12[0]': '19' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0]': '20' +'topmostSubform[0].Page1[0].PartITable[0].Line1b[0].#subform[0].c1_2[0]': '21' +'topmostSubform[0].Page1[0].PartITable[0].Line1b[0]': '22' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_13[0]': '23' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_14[0]': '24' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_15[0]': '25' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_16[0]': '26' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_17[0]': '27' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_18[0]': '28' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_19[0]': '29' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_20[0]': '30' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_21[0]': '31' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_22[0]': '32' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_23[0]': '33' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_24[0]': '34' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_25[0]': '35' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_26[0]': '36' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_27[0]': '37' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_28[0]': '38' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_29[0]': '39' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_30[0]': '40' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_31[0]': '41' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_32[0]': '42' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_33[0]': '43' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_34[0]': '44' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_35[0]': '45' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_36[0]': '46' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_37[0]': '47' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_38[0]': '48' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_39[0]': '49' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_40[0]': '50' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_41[0]': '51' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_42[0]': '52' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_43[0]': '53' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_44[0]': '54' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_45[0]': '55' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_46[0]': '56' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_47[0]': '57' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_48[0]': '58' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_49[0]': '59' +'topmostSubform[0].Page1[0].PartITable[0]': '60' +'topmostSubform[0].Page1[0].f1_50[0]': '61' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0].CreditClaimedCheckboxes[0].c1_3[0]': '62' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0].CreditClaimedCheckboxes[0].c1_3[1]': '63' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0]': '64' +'topmostSubform[0].Page1[0].Part2TableHead[0]': '65' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_51[0]': '66' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_52[0]': '67' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_53[0]': '68' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_54[0]': '69' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_55[0]': '70' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_56[0]': '71' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_57[0]': '72' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_58[0]': '73' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_59[0]': '74' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_60[0]': '75' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_61[0]': '76' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_62[0]': '77' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_63[0]': '78' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_64[0]': '79' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_65[0]': '80' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_66[0]': '81' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_67[0]': '82' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_68[0]': '83' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_69[0]': '84' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_70[0]': '85' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_71[0]': '86' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_72[0]': '87' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_73[0]': '88' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_74[0]': '89' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_75[0]': '90' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_76[0]': '91' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_77[0]': '92' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_78[0]': '93' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_79[0]': '94' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_80[0]': '95' +'topmostSubform[0].Page1[0].Part2TableBody[0]': '96' +'topmostSubform[0].Page1[0].f1_81[0]': '97' +'topmostSubform[0].Page2[0].f2_1[0]': '98' +'topmostSubform[0].Page2[0].f2_2[0]': '99' +'topmostSubform[0].Page2[0].f2_3[0]': '100' +'topmostSubform[0].Page2[0].f2_4[0]': '101' +'topmostSubform[0].Page2[0].f2_5[0]': '102' +'topmostSubform[0].Page2[0].f2_6[0]': '103' +'topmostSubform[0].Page2[0].f2_7[0]': '104' +'topmostSubform[0].Page2[0].f2_8[0]': '105' +'topmostSubform[0].Page2[0].f2_9[0]': '106' +'topmostSubform[0].Page2[0].f2_10[0]': '107' +'topmostSubform[0].Page2[0].f2_11[0]': '108' +'topmostSubform[0].Page2[0].f2_12[0]': '109' +'topmostSubform[0].Page2[0].f2_13[0]': '110' +'topmostSubform[0].Page2[0].f2_14[0]': '111' +'topmostSubform[0].Page2[0].f2_15[0]': '112' +'topmostSubform[0].Page2[0].f2_16[0]': '113' +'topmostSubform[0].Page2[0].f2_17[0]': '114' +'topmostSubform[0].Page2[0].f2_18[0]': '115' +'topmostSubform[0].Page2[0].f2_19[0]': '116' +'topmostSubform[0].Page2[0].f2_20[0]': '117' +'topmostSubform[0].Page2[0].f2_21[0]': '118' +'topmostSubform[0].Page2[0].f2_22[0]': '119' +'topmostSubform[0].Page2[0].f2_23[0]': '120' +'topmostSubform[0].Page2[0].f2_24[0]': '121' +'topmostSubform[0].Page2[0].f2_25[0]': '122' +'topmostSubform[0]': '123' diff --git a/src/maps/f1116amt-map.yaml b/src/maps/f1116amt-map.yaml new file mode 100644 index 0000000..d6a1c39 --- /dev/null +++ b/src/maps/f1116amt-map.yaml @@ -0,0 +1,124 @@ +'topmostSubform[0].Page1[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].c1_1[0]': '2' +'topmostSubform[0].Page1[0].c1_1[1]': '3' +'topmostSubform[0].Page1[0].c1_1[2]': '4' +'topmostSubform[0].Page1[0].c1_1[3]': '5' +'topmostSubform[0].Page1[0].c1_1[4]': '6' +'topmostSubform[0].Page1[0].c1_1[5]': '7' +'topmostSubform[0].Page1[0].c1_1[6]': '8' +'topmostSubform[0].Page1[0].p1-t3[0]': '9' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_3[0]': '10' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_4[0]': '11' +'topmostSubform[0].Page1[0].PartITable[0].LineI[0].f1_5[0]': '12' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_6[0]': '13' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_7[0]': '14' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[0].f1_8[0]': '15' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[1].f1_9[0]': '16' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[2].f1_10[0]': '17' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[3].f1_11[0]': '18' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0].#subform[5].f1_12[0]': '19' +'topmostSubform[0].Page1[0].PartITable[0].Line1a[0]': '20' +'topmostSubform[0].Page1[0].PartITable[0].Line1b[0].#subform[0].c1_2[0]': '21' +'topmostSubform[0].Page1[0].PartITable[0].Line1b[0]': '22' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_13[0]': '23' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_14[0]': '24' +'topmostSubform[0].Page1[0].PartITable[0].Line2[0].f1_15[0]': '25' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_16[0]': '26' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_17[0]': '27' +'topmostSubform[0].Page1[0].PartITable[0].Line3a[0].f1_18[0]': '28' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_19[0]': '29' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_20[0]': '30' +'topmostSubform[0].Page1[0].PartITable[0].Line3b[0].f1_21[0]': '31' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_22[0]': '32' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_23[0]': '33' +'topmostSubform[0].Page1[0].PartITable[0].Line3c[0].f1_24[0]': '34' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_25[0]': '35' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_26[0]': '36' +'topmostSubform[0].Page1[0].PartITable[0].Line3d[0].f1_27[0]': '37' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_28[0]': '38' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_29[0]': '39' +'topmostSubform[0].Page1[0].PartITable[0].Line3e[0].f1_30[0]': '40' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_31[0]': '41' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_32[0]': '42' +'topmostSubform[0].Page1[0].PartITable[0].Line3f[0].f1_33[0]': '43' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_34[0]': '44' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_35[0]': '45' +'topmostSubform[0].Page1[0].PartITable[0].Line3g[0].f1_36[0]': '46' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_37[0]': '47' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_38[0]': '48' +'topmostSubform[0].Page1[0].PartITable[0].Line4a[0].f1_39[0]': '49' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_40[0]': '50' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_41[0]': '51' +'topmostSubform[0].Page1[0].PartITable[0].Line4b[0].f1_42[0]': '52' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_43[0]': '53' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_44[0]': '54' +'topmostSubform[0].Page1[0].PartITable[0].Line5[0].f1_45[0]': '55' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_46[0]': '56' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_47[0]': '57' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_48[0]': '58' +'topmostSubform[0].Page1[0].PartITable[0].Line6[0].f1_49[0]': '59' +'topmostSubform[0].Page1[0].PartITable[0]': '60' +'topmostSubform[0].Page1[0].f1_50[0]': '61' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0].CreditClaimedCheckboxes[0].c1_3[0]': '62' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0].CreditClaimedCheckboxes[0].c1_3[1]': '63' +'topmostSubform[0].Page1[0].Part2TableHead[0].ColumnJ[0]': '64' +'topmostSubform[0].Page1[0].Part2TableHead[0]': '65' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_51[0]': '66' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_52[0]': '67' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_53[0]': '68' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_54[0]': '69' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_55[0]': '70' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_56[0]': '71' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_57[0]': '72' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_58[0]': '73' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_59[0]': '74' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowA[0].f1_60[0]': '75' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_61[0]': '76' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_62[0]': '77' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_63[0]': '78' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_64[0]': '79' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_65[0]': '80' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_66[0]': '81' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_67[0]': '82' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_68[0]': '83' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_69[0]': '84' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowB[0].f1_70[0]': '85' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_71[0]': '86' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_72[0]': '87' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_73[0]': '88' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_74[0]': '89' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_75[0]': '90' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_76[0]': '91' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_77[0]': '92' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_78[0]': '93' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_79[0]': '94' +'topmostSubform[0].Page1[0].Part2TableBody[0].RowC[0].f1_80[0]': '95' +'topmostSubform[0].Page1[0].Part2TableBody[0]': '96' +'topmostSubform[0].Page1[0].f1_81[0]': '97' +'topmostSubform[0].Page2[0].f2_1[0]': '98' +'topmostSubform[0].Page2[0].f2_2[0]': '99' +'topmostSubform[0].Page2[0].f2_3[0]': '100' +'topmostSubform[0].Page2[0].f2_4[0]': '101' +'topmostSubform[0].Page2[0].f2_5[0]': '102' +'topmostSubform[0].Page2[0].f2_6[0]': '103' +'topmostSubform[0].Page2[0].f2_7[0]': '104' +'topmostSubform[0].Page2[0].f2_8[0]': '105' +'topmostSubform[0].Page2[0].f2_9[0]': '106' +'topmostSubform[0].Page2[0].f2_10[0]': '107' +'topmostSubform[0].Page2[0].f2_11[0]': '108' +'topmostSubform[0].Page2[0].f2_12[0]': '109' +'topmostSubform[0].Page2[0].f2_13[0]': '110' +'topmostSubform[0].Page2[0].f2_14[0]': '111' +'topmostSubform[0].Page2[0].f2_15[0]': '112' +'topmostSubform[0].Page2[0].f2_16[0]': '113' +'topmostSubform[0].Page2[0].f2_17[0]': '114' +'topmostSubform[0].Page2[0].f2_18[0]': '115' +'topmostSubform[0].Page2[0].f2_19[0]': '116' +'topmostSubform[0].Page2[0].f2_20[0]': '117' +'topmostSubform[0].Page2[0].f2_21[0]': '118' +'topmostSubform[0].Page2[0].f2_22[0]': '119' +'topmostSubform[0].Page2[0].f2_23[0]': '120' +'topmostSubform[0].Page2[0].f2_24[0]': '121' +'topmostSubform[0].Page2[0].f2_25[0]': '122' +'topmostSubform[0]': '123' diff --git a/src/maps/f2555-map.yaml b/src/maps/f2555-map.yaml new file mode 100644 index 0000000..c25cb0c --- /dev/null +++ b/src/maps/f2555-map.yaml @@ -0,0 +1,164 @@ +'topmostSubform[0].Page1[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].f1_3[0]': '2' +'topmostSubform[0].Page1[0].f1_4[0]': '3' +'topmostSubform[0].Page1[0].f1_5[0]': '4' +'topmostSubform[0].Page1[0].f1_6[0]': '5' +'topmostSubform[0].Page1[0].f1_7[0]': '6' +'topmostSubform[0].Page1[0].c1_1[0]': '7' +'topmostSubform[0].Page1[0].c1_2[0]': '8' +'topmostSubform[0].Page1[0].c1_3[0]': '9' +'topmostSubform[0].Page1[0].c1_4[0]': '10' +'topmostSubform[0].Page1[0].c1_5[0]': '11' +'topmostSubform[0].Page1[0].f1_8[0]': '12' +'topmostSubform[0].Page1[0].f1_9[0]': '13' +'topmostSubform[0].Page1[0].c1_6[0]': '14' +'topmostSubform[0].Page1[0].c1_7[0]': '15' +'topmostSubform[0].Page1[0].c1_7[1]': '16' +'topmostSubform[0].Page1[0].f1_10[0]': '17' +'topmostSubform[0].Page1[0].f1_11[0]': '18' +'topmostSubform[0].Page1[0].c1_9[0]': '19' +'topmostSubform[0].Page1[0].c1_9[1]': '20' +'topmostSubform[0].Page1[0].f1_12[0]': '21' +'topmostSubform[0].Page1[0].f1_13[0]': '22' +'topmostSubform[0].Page1[0].f1_14[0]': '23' +'topmostSubform[0].Page1[0].f1_15[0]': '24' +'topmostSubform[0].Page1[0].f1_16[0]': '25' +'topmostSubform[0].Page1[0].c1_11[0]': '26' +'topmostSubform[0].Page1[0].c1_11[1]': '27' +'topmostSubform[0].Page1[0].c1_11[2]': '28' +'topmostSubform[0].Page1[0].c1_11[3]': '29' +'topmostSubform[0].Page1[0].c1_15[0]': '30' +'topmostSubform[0].Page1[0].c1_15[1]': '31' +'topmostSubform[0].Page1[0].f1_17[0]': '32' +'topmostSubform[0].Page1[0].c1_17[0]': '33' +'topmostSubform[0].Page1[0].c1_17[1]': '34' +'topmostSubform[0].Page1[0].c1_19[0]': '35' +'topmostSubform[0].Page1[0].c1_19[1]': '36' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow1[0].f1_18[0]': '37' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow1[0].f1_19[0]': '38' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow1[0].f1_20[0]': '39' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow1[0].f1_21[0]': '40' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow2[0].f1_22[0]': '41' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow2[0].f1_23[0]': '42' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow2[0].f1_24[0]': '43' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow2[0].f1_25[0]': '44' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow3[0].f1_26[0]': '45' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow3[0].f1_27[0]': '46' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow3[0].f1_28[0]': '47' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow3[0].f1_29[0]': '48' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow4[0].f1_30[0]': '49' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow4[0].f1_31[0]': '50' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow4[0].f1_32[0]': '51' +'topmostSubform[0].Page1[0].Table1_Line14[0].BodyRow4[0].f1_33[0]': '52' +'topmostSubform[0].Page1[0].Table1_Line14[0]': '53' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow5[0].f1_34[0]': '54' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow5[0].f1_35[0]': '55' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow5[0].f1_36[0]': '56' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow5[0].f1_37[0]': '57' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow6[0].f1_38[0]': '58' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow6[0].f1_39[0]': '59' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow6[0].f1_40[0]': '60' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow6[0].f1_41[0]': '61' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow7[0].f1_42[0]': '62' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow7[0].f1_43[0]': '63' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow7[0].f1_44[0]': '64' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow7[0].f1_45[0]': '65' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow8[0].f1_46[0]': '66' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow8[0].f1_47[0]': '67' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow8[0].f1_48[0]': '68' +'topmostSubform[0].Page1[0].Table2_Line14[0].BodyRow8[0].f1_49[0]': '69' +'topmostSubform[0].Page1[0].Table2_Line14[0]': '70' +'topmostSubform[0].Page1[0].f1_50[0]': '71' +'topmostSubform[0].Page1[0].f1_51[0]': '72' +'topmostSubform[0].Page1[0].f1_52[0]': '73' +'topmostSubform[0].Page1[0].c1_21[0]': '74' +'topmostSubform[0].Page1[0].c1_21[1]': '75' +'topmostSubform[0].Page1[0].c1_23[0]': '76' +'topmostSubform[0].Page1[0].c1_23[1]': '77' +'topmostSubform[0].Page1[0].f1_53[0]': '78' +'topmostSubform[0].Page1[0].f1_54[0]': '79' +'topmostSubform[0].Page2[0].f2_1[0]': '80' +'topmostSubform[0].Page2[0].f2_2[0]': '81' +'topmostSubform[0].Page2[0].f2_3[0]': '82' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_4[0]': '83' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_5[0]': '84' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_6[0]': '85' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_7[0]': '86' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_8[0]': '87' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow1[0].f2_9[0]': '88' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_10[0]': '89' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_11[0]': '90' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_12[0]': '91' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_13[0]': '92' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_14[0]': '93' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow2[0].f2_15[0]': '94' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_16[0]': '95' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_17[0]': '96' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_18[0]': '97' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_19[0]': '98' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_20[0]': '99' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow3[0].f2_21[0]': '100' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_22[0]': '101' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_23[0]': '102' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_24[0]': '103' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_25[0]': '104' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_26[0]': '105' +'topmostSubform[0].Page2[0].Table_Line18[0].BodyRow4[0].f2_27[0]': '106' +'topmostSubform[0].Page2[0].Table_Line18[0]': '107' +'topmostSubform[0].Page2[0].f2_28[0]': '108' +'topmostSubform[0].Page2[0].f2_29[0]': '109' +'topmostSubform[0].Page2[0].f2_30[0]': '110' +'topmostSubform[0].Page2[0].f2_31[0]': '111' +'topmostSubform[0].Page2[0].f2_32[0]': '112' +'topmostSubform[0].Page2[0].f2_33[0]': '113' +'topmostSubform[0].Page2[0].f2_34[0]': '114' +'topmostSubform[0].Page2[0].f2_35[0]': '115' +'topmostSubform[0].Page2[0].f2_36[0]': '116' +'topmostSubform[0].Page2[0].f2_37[0]': '117' +'topmostSubform[0].Page2[0].f2_38[0]': '118' +'topmostSubform[0].Page2[0].f2_39[0]': '119' +'topmostSubform[0].Page2[0].f2_40[0]': '120' +'topmostSubform[0].Page2[0].f2_41[0]': '121' +'topmostSubform[0].Page2[0].f2_42[0]': '122' +'topmostSubform[0].Page2[0].f2_43[0]': '123' +'topmostSubform[0].Page2[0].f2_44[0]': '124' +'topmostSubform[0].Page2[0].f2_45[0]': '125' +'topmostSubform[0].Page2[0].f2_46[0]': '126' +'topmostSubform[0].Page2[0].f2_47[0]': '127' +'topmostSubform[0].Page2[0].f2_48[0]': '128' +'topmostSubform[0].Page2[0].f2_49[0]': '129' +'topmostSubform[0].Page2[0].f2_50[0]': '130' +'topmostSubform[0].Page2[0].f2_51[0]': '131' +'topmostSubform[0].Page2[0].f2_52[0]': '132' +'topmostSubform[0].Page2[0].f2_53[0]': '133' +'topmostSubform[0].Page3[0].f3_1[0]': '134' +'topmostSubform[0].Page3[0].c3_1[0]': '135' +'topmostSubform[0].Page3[0].c3_1[1]': '136' +'topmostSubform[0].Page3[0].f3_2[0]': '137' +'topmostSubform[0].Page3[0].f3_3[0]': '138' +'topmostSubform[0].Page3[0].f3_4[0]': '139' +'topmostSubform[0].Page3[0].f3_5[0]': '140' +'topmostSubform[0].Page3[0].f3_6[0]': '141' +'topmostSubform[0].Page3[0].f3_7[0]': '142' +'topmostSubform[0].Page3[0].f3_8[0]': '143' +'topmostSubform[0].Page3[0].f3_9[0]': '144' +'topmostSubform[0].Page3[0].f3_10[0]': '145' +'topmostSubform[0].Page3[0].f3_11[0]': '146' +'topmostSubform[0].Page3[0].f3_20[0]': '147' +'topmostSubform[0].Page3[0].f3_21[0]': '148' +'topmostSubform[0].Page3[0].f3_22[0]': '149' +'topmostSubform[0].Page3[0].f3_23[0]': '150' +'topmostSubform[0].Page3[0].f3_24[0]': '151' +'topmostSubform[0].Page3[0].f3_25[0]': '152' +'topmostSubform[0].Page3[0].f3_28[0]': '153' +'topmostSubform[0].Page3[0].f3_29[0]': '154' +'topmostSubform[0].Page3[0].f3_30[0]': '155' +'topmostSubform[0].Page3[0].f3_31[0]': '156' +'topmostSubform[0].Page3[0].f3_32[0]': '157' +'topmostSubform[0].Page3[0].f3_33[0]': '158' +'topmostSubform[0].Page3[0].f3_34[0]': '159' +'topmostSubform[0].Page3[0].f3_35[0]': '160' +'topmostSubform[0].Page3[0].f3_36[0]': '161' +'topmostSubform[0].Page3[0].f3_37[0]': '162' +'topmostSubform[0]': '163' diff --git a/src/maps/f6251-map.yaml b/src/maps/f6251-map.yaml new file mode 100644 index 0000000..7ca4686 --- /dev/null +++ b/src/maps/f6251-map.yaml @@ -0,0 +1,62 @@ +'topmostSubform[0].Page1[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].f1_3[0]': '2' +'topmostSubform[0].Page1[0].f1_4[0]': '3' +'topmostSubform[0].Page1[0].f1_5[0]': '4' +'topmostSubform[0].Page1[0].f1_6[0]': '5' +'topmostSubform[0].Page1[0].f1_7[0]': '6' +'topmostSubform[0].Page1[0].f1_8[0]': '7' +'topmostSubform[0].Page1[0].f1_9[0]': '8' +'topmostSubform[0].Page1[0].f1_10[0]': '9' +'topmostSubform[0].Page1[0].f1_11[0]': '10' +'topmostSubform[0].Page1[0].f1_12[0]': '11' +'topmostSubform[0].Page1[0].f1_13[0]': '12' +'topmostSubform[0].Page1[0].f1_14[0]': '13' +'topmostSubform[0].Page1[0].f1_15[0]': '14' +'topmostSubform[0].Page1[0].f1_16[0]': '15' +'topmostSubform[0].Page1[0].f1_17[0]': '16' +'topmostSubform[0].Page1[0].f1_18[0]': '17' +'topmostSubform[0].Page1[0].f1_19[0]': '18' +'topmostSubform[0].Page1[0].f1_20[0]': '19' +'topmostSubform[0].Page1[0].f1_21[0]': '20' +'topmostSubform[0].Page1[0].f1_22[0]': '21' +'topmostSubform[0].Page1[0].f1_23[0]': '22' +'topmostSubform[0].Page1[0].f1_24[0]': '23' +'topmostSubform[0].Page1[0].f1_25[0]': '24' +'topmostSubform[0].Page1[0].f1_26[0]': '25' +'topmostSubform[0].Page1[0].TagCorrectingSubform[0].f1_27[0]': '26' +'topmostSubform[0].Page1[0].f1_28[0]': '27' +'topmostSubform[0].Page1[0].f1_29[0]': '28' +'topmostSubform[0].Page1[0].f1_30[0]': '29' +'topmostSubform[0].Page1[0].f1_31[0]': '30' +'topmostSubform[0].Page1[0].f1_32[0]': '31' +'topmostSubform[0].Page2[0].f2_1[0]': '32' +'topmostSubform[0].Page2[0].f2_2[0]': '33' +'topmostSubform[0].Page2[0].f2_3[0]': '34' +'topmostSubform[0].Page2[0].f2_4[0]': '35' +'topmostSubform[0].Page2[0].f2_5[0]': '36' +'topmostSubform[0].Page2[0].f2_6[0]': '37' +'topmostSubform[0].Page2[0].f2_7[0]': '38' +'topmostSubform[0].Page2[0].f2_8[0]': '39' +'topmostSubform[0].Page2[0].f2_9[0]': '40' +'topmostSubform[0].Page2[0].f2_10[0]': '41' +'topmostSubform[0].Page2[0].f2_11[0]': '42' +'topmostSubform[0].Page2[0].f2_12[0]': '43' +'topmostSubform[0].Page2[0].f2_13[0]': '44' +'topmostSubform[0].Page2[0].f2_14[0]': '45' +'topmostSubform[0].Page2[0].f2_15[0]': '46' +'topmostSubform[0].Page2[0].f2_16[0]': '47' +'topmostSubform[0].Page2[0].f2_17[0]': '48' +'topmostSubform[0].Page2[0].f2_18[0]': '49' +'topmostSubform[0].Page2[0].f2_19[0]': '50' +'topmostSubform[0].Page2[0].f2_20[0]': '51' +'topmostSubform[0].Page2[0].f2_21[0]': '52' +'topmostSubform[0].Page2[0].f2_22[0]': '53' +'topmostSubform[0].Page2[0].f2_23[0]': '54' +'topmostSubform[0].Page2[0].f2_24[0]': '55' +'topmostSubform[0].Page2[0].f2_25[0]': '56' +'topmostSubform[0].Page2[0].f2_26[0]': '57' +'topmostSubform[0].Page2[0].f2_27[0]': '58' +'topmostSubform[0].Page2[0].f2_28[0]': '59' +'topmostSubform[0].Page2[0].f2_29[0]': '60' +'topmostSubform[0]': '61' diff --git a/src/maps/f8938-map.yaml b/src/maps/f8938-map.yaml new file mode 100644 index 0000000..ab7e2cd --- /dev/null +++ b/src/maps/f8938-map.yaml @@ -0,0 +1,195 @@ +'topmostSubform[0].Page1[0].Pg1Header[0].f1_1[0]': '0' +'topmostSubform[0].Page1[0].Pg1Header[0].f1_2[0]': '1' +'topmostSubform[0].Page1[0].Pg1Header[0].f1_3[0]': '2' +'topmostSubform[0].Page1[0].Pg1Header[0].f1_4[0]': '3' +'topmostSubform[0].Page1[0].Pg1Header[0].f1_5[0]': '4' +'topmostSubform[0].Page1[0].c1_1[0]': '5' +'topmostSubform[0].Page1[0].f1_6[0]': '6' +'topmostSubform[0].Page1[0].f1_7[0]': '7' +'topmostSubform[0].Page1[0].f1_8[0]': '8' +'topmostSubform[0].Page1[0].c1_2[0]': '9' +'topmostSubform[0].Page1[0].c1_2[1]': '10' +'topmostSubform[0].Page1[0].c1_2[2]': '11' +'topmostSubform[0].Page1[0].c1_2[3]': '12' +'topmostSubform[0].Page1[0].f1_9[0]': '13' +'topmostSubform[0].Page1[0].f1_10[0]': '14' +'topmostSubform[0].Page1[0].f1_11[0]': '15' +'topmostSubform[0].Page1[0].f1_12[0]': '16' +'topmostSubform[0].Page1[0].f1_13[0]': '17' +'topmostSubform[0].Page1[0].f1_14[0]': '18' +'topmostSubform[0].Page1[0].c1_3[0]': '19' +'topmostSubform[0].Page1[0].c1_3[1]': '20' +'topmostSubform[0].Page1[0].f1_15[0]': '21' +'topmostSubform[0].Page1[0].f1_16[0]': '22' +'topmostSubform[0].Page1[0].c1_4[0]': '23' +'topmostSubform[0].Page1[0].c1_4[1]': '24' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow1[0].f1_17[0]': '25' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow1[0].f1_18[0]': '26' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow1[0].f1_19[0]': '27' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow2[0].f1_20[0]': '28' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow2[0].f1_21[0]': '29' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow2[0].f1_22[0]': '30' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow3[0].f1_23[0]': '31' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow3[0].f1_24[0]': '32' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow3[0].f1_25[0]': '33' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow4[0].f1_26[0]': '34' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow4[0].f1_27[0]': '35' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow4[0].f1_28[0]': '36' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow5[0].f1_29[0]': '37' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow5[0].f1_30[0]': '38' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow5[0].f1_31[0]': '39' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow6[0].f1_32[0]': '40' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow6[0].f1_33[0]': '41' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow6[0].f1_34[0]': '42' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow7[0].f1_35[0]': '43' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow7[0].f1_36[0]': '44' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow7[0].f1_37[0]': '45' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow11[0].f1_38[0]': '46' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow11[0].f1_39[0]': '47' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow11[0].f1_40[0]': '48' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow12[0].f1_41[0]': '49' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow12[0].f1_42[0]': '50' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow12[0].f1_43[0]': '51' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow13[0].f1_44[0]': '52' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow13[0].f1_45[0]': '53' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow13[0].f1_46[0]': '54' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow14[0].f1_47[0]': '55' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow14[0].f1_48[0]': '56' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow14[0].f1_49[0]': '57' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow15[0].f1_50[0]': '58' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow15[0].f1_51[0]': '59' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow15[0].f1_52[0]': '60' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow16[0].f1_53[0]': '61' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow16[0].f1_54[0]': '62' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow16[0].f1_55[0]': '63' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow17[0].f1_56[0]': '64' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow17[0].f1_57[0]': '65' +'topmostSubform[0].Page1[0].Table_Part3[0].BodyRow17[0].f1_58[0]': '66' +'topmostSubform[0].Page1[0].Table_Part3[0]': '67' +'topmostSubform[0].Page1[0].f1_59[0]': '68' +'topmostSubform[0].Page1[0].f1_60[0]': '69' +'topmostSubform[0].Page1[0].f1_61[0]': '70' +'topmostSubform[0].Page1[0].f1_62[0]': '71' +'topmostSubform[0].Page1[0].f1_63[0]': '72' +'topmostSubform[0].Page1[0].c1_5[0]': '73' +'topmostSubform[0].Page1[0].c1_5[1]': '74' +'topmostSubform[0].Page1[0].f1_64[0]': '75' +'topmostSubform[0].Page1[0].c1_6[0]': '76' +'topmostSubform[0].Page1[0].c1_7[0]': '77' +'topmostSubform[0].Page1[0].c1_8[0]': '78' +'topmostSubform[0].Page1[0].c1_9[0]': '79' +'topmostSubform[0].Page1[0].f1_65[0]': '80' +'topmostSubform[0].Page1[0].c1_10[0]': '81' +'topmostSubform[0].Page1[0].c1_10[1]': '82' +'topmostSubform[0].Page1[0].f1_66[0]': '83' +'topmostSubform[0].Page1[0].f1_67[0]': '84' +'topmostSubform[0].Page1[0].f1_68[0]': '85' +'topmostSubform[0].Page2[0].f2_1[0]': '86' +'topmostSubform[0].Page2[0].f2_2[0]': '87' +'topmostSubform[0].Page2[0].f2_3[0]': '88' +'topmostSubform[0].Page2[0].f2_4[0]': '89' +'topmostSubform[0].Page2[0].f2_5[0]': '90' +'topmostSubform[0].Page2[0].f2_6[0]': '91' +'topmostSubform[0].Page2[0].f2_7[0]': '92' +'topmostSubform[0].Page2[0].f2_8[0]': '93' +'topmostSubform[0].Page2[0].f2_9[0]': '94' +'topmostSubform[0].Page2[0].f2_10[0]': '95' +'topmostSubform[0].Page2[0].f2_11[0]': '96' +'topmostSubform[0].Page2[0].c2_1[0]': '97' +'topmostSubform[0].Page2[0].c2_2[0]': '98' +'topmostSubform[0].Page2[0].c2_3[0]': '99' +'topmostSubform[0].Page2[0].c2_3[1]': '100' +'topmostSubform[0].Page2[0].c2_3[2]': '101' +'topmostSubform[0].Page2[0].c2_3[3]': '102' +'topmostSubform[0].Page2[0].f2_12[0]': '103' +'topmostSubform[0].Page2[0].c2_4[0]': '104' +'topmostSubform[0].Page2[0].c2_4[1]': '105' +'topmostSubform[0].Page2[0].f2_13[0]': '106' +'topmostSubform[0].Page2[0].f2_14[0]': '107' +'topmostSubform[0].Page2[0].f2_15[0]': '108' +'topmostSubform[0].Page2[0].f2_16[0]': '109' +'topmostSubform[0].Page2[0].f2_17[0]': '110' +'topmostSubform[0].Page2[0].f2_18[0]': '111' +'topmostSubform[0].Page2[0].f2_19[0]': '112' +'topmostSubform[0].Page2[0].f2_20[0]': '113' +'topmostSubform[0].Page2[0].c2_5[0]': '114' +'topmostSubform[0].Page2[0].c2_5[1]': '115' +'topmostSubform[0].Page2[0].c2_5[2]': '116' +'topmostSubform[0].Page2[0].c2_5[3]': '117' +'topmostSubform[0].Page2[0].f2_21[0]': '118' +'topmostSubform[0].Page2[0].f2_22[0]': '119' +'topmostSubform[0].Page2[0].f2_23[0]': '120' +'topmostSubform[0].Page2[0].c2_6[0]': '121' +'topmostSubform[0].Page2[0].c2_6[1]': '122' +'topmostSubform[0].Page2[0].c2_7[0]': '123' +'topmostSubform[0].Page2[0].c2_7[1]': '124' +'topmostSubform[0].Page2[0].c2_7[2]': '125' +'topmostSubform[0].Page2[0].c2_7[3]': '126' +'topmostSubform[0].Page2[0].c2_7[4]': '127' +'topmostSubform[0].Page2[0].c2_8[0]': '128' +'topmostSubform[0].Page2[0].c2_8[1]': '129' +'topmostSubform[0].Page2[0].f2_24[0]': '130' +'topmostSubform[0].Page2[0].f2_25[0]': '131' +'topmostSubform[0].Page3[0].Pg3Header[0].f3_1[0]': '132' +'topmostSubform[0].Page3[0].f3_2[0]': '133' +'topmostSubform[0].Page3[0].f3_3[0]': '134' +'topmostSubform[0].Page3[0].c3_1[0]': '135' +'topmostSubform[0].Page3[0].c3_1[1]': '136' +'topmostSubform[0].Page3[0].f3_4[0]': '137' +'topmostSubform[0].Page3[0].c3_2[0]': '138' +'topmostSubform[0].Page3[0].c3_3[0]': '139' +'topmostSubform[0].Page3[0].c3_4[0]': '140' +'topmostSubform[0].Page3[0].c3_5[0]': '141' +'topmostSubform[0].Page3[0].f3_5[0]': '142' +'topmostSubform[0].Page3[0].c3_6[0]': '143' +'topmostSubform[0].Page3[0].c3_6[1]': '144' +'topmostSubform[0].Page3[0].f3_6[0]': '145' +'topmostSubform[0].Page3[0].f3_7[0]': '146' +'topmostSubform[0].Page3[0].f3_8[0]': '147' +'topmostSubform[0].Page3[0].f3_9[0]': '148' +'topmostSubform[0].Page3[0].f3_10[0]': '149' +'topmostSubform[0].Page3[0].f3_11[0]': '150' +'topmostSubform[0].Page3[0].f3_12[0]': '151' +'topmostSubform[0].Page3[0].f3_13[0]': '152' +'topmostSubform[0].Page3[0].f3_14[0]': '153' +'topmostSubform[0].Page3[0].f3_15[0]': '154' +'topmostSubform[0].Page3[0].f3_16[0]': '155' +'topmostSubform[0].Page3[0].f3_17[0]': '156' +'topmostSubform[0].Page3[0].f3_18[0]': '157' +'topmostSubform[0].Page3[0].f3_19[0]': '158' +'topmostSubform[0].Page3[0].c3_7[0]': '159' +'topmostSubform[0].Page3[0].c3_8[0]': '160' +'topmostSubform[0].Page3[0].c3_9[0]': '161' +'topmostSubform[0].Page3[0].c3_9[1]': '162' +'topmostSubform[0].Page3[0].c3_9[2]': '163' +'topmostSubform[0].Page3[0].c3_9[3]': '164' +'topmostSubform[0].Page3[0].f3_20[0]': '165' +'topmostSubform[0].Page3[0].c3_10[0]': '166' +'topmostSubform[0].Page3[0].c3_10[1]': '167' +'topmostSubform[0].Page3[0].f3_21[0]': '168' +'topmostSubform[0].Page3[0].f3_22[0]': '169' +'topmostSubform[0].Page3[0].f3_23[0]': '170' +'topmostSubform[0].Page3[0].f3_24[0]': '171' +'topmostSubform[0].Page3[0].f3_25[0]': '172' +'topmostSubform[0].Page3[0].f3_26[0]': '173' +'topmostSubform[0].Page3[0].f3_27[0]': '174' +'topmostSubform[0].Page3[0].f3_28[0]': '175' +'topmostSubform[0].Page3[0].c3_11[0]': '176' +'topmostSubform[0].Page3[0].c3_11[1]': '177' +'topmostSubform[0].Page3[0].c3_11[2]': '178' +'topmostSubform[0].Page3[0].c3_11[3]': '179' +'topmostSubform[0].Page3[0].f3_29[0]': '180' +'topmostSubform[0].Page3[0].f3_30[0]': '181' +'topmostSubform[0].Page3[0].f3_31[0]': '182' +'topmostSubform[0].Page3[0].c3_12[0]': '183' +'topmostSubform[0].Page3[0].c3_12[1]': '184' +'topmostSubform[0].Page3[0].c3_13[0]': '185' +'topmostSubform[0].Page3[0].c3_13[1]': '186' +'topmostSubform[0].Page3[0].c3_13[2]': '187' +'topmostSubform[0].Page3[0].c3_13[3]': '188' +'topmostSubform[0].Page3[0].c3_13[4]': '189' +'topmostSubform[0].Page3[0].c3_14[0]': '190' +'topmostSubform[0].Page3[0].c3_14[1]': '191' +'topmostSubform[0].Page3[0].f3_32[0]': '192' +'topmostSubform[0].Page3[0].f3_33[0]': '193' +'topmostSubform[0]': '194' diff --git a/src/maps/f8965-map.yaml b/src/maps/f8965-map.yaml new file mode 100644 index 0000000..0161f46 --- /dev/null +++ b/src/maps/f8965-map.yaml @@ -0,0 +1,120 @@ +'topmostSubform[0].Page1[0].f1_01_0_[0]': '0' +'topmostSubform[0].Page1[0].f1_02_0_[0]': '1' +'topmostSubform[0].Page1[0].Table_Part1[0].Row1[0].f1_03_0_[0]': '2' +'topmostSubform[0].Page1[0].Table_Part1[0].Row1[0].f1_04_0_[0]': '3' +'topmostSubform[0].Page1[0].Table_Part1[0].Row1[0].f1_05_0_[0]': '4' +'topmostSubform[0].Page1[0].Table_Part1[0].Row2[0].f1_06_0_[0]': '5' +'topmostSubform[0].Page1[0].Table_Part1[0].Row2[0].f1_07_0_[0]': '6' +'topmostSubform[0].Page1[0].Table_Part1[0].Row2[0].f1_08_0_[0]': '7' +'topmostSubform[0].Page1[0].Table_Part1[0].Row3[0].f1_09_0_[0]': '8' +'topmostSubform[0].Page1[0].Table_Part1[0].Row3[0].f1_10_0_[0]': '9' +'topmostSubform[0].Page1[0].Table_Part1[0].Row3[0].f1_11_0_[0]': '10' +'topmostSubform[0].Page1[0].Table_Part1[0].Row4[0].f1_12_0_[0]': '11' +'topmostSubform[0].Page1[0].Table_Part1[0].Row4[0].f1_13_0_[0]': '12' +'topmostSubform[0].Page1[0].Table_Part1[0].Row4[0].f1_14_0_[0]': '13' +'topmostSubform[0].Page1[0].Table_Part1[0].Row5[0].f1_15_0_[0]': '14' +'topmostSubform[0].Page1[0].Table_Part1[0].Row5[0].f1_16_0_[0]': '15' +'topmostSubform[0].Page1[0].Table_Part1[0].Row5[0].f1_17_0_[0]': '16' +'topmostSubform[0].Page1[0].Table_Part1[0].Row6[0].f1_18_0_[0]': '17' +'topmostSubform[0].Page1[0].Table_Part1[0].Row6[0].f1_19_0_[0]': '18' +'topmostSubform[0].Page1[0].Table_Part1[0].Row6[0].f1_20_0_[0]': '19' +'topmostSubform[0].Page1[0].Table_Part1[0]': '20' +'topmostSubform[0].Page1[0].c1_01_0_[0]': '21' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_21_0_[0]': '22' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_22_0_[0]': '23' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_23_0_[0]': '24' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_25_0_[0]': '25' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_26_0_[0]': '26' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_27_0_[0]': '27' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_28_0_[0]': '28' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_29_0_[0]': '29' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_30_0_[0]': '30' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_31_0_[0]': '31' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_32_0_[0]': '32' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_33_0_[0]': '33' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_34_0_[0]': '34' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_35_0_[0]': '35' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_36_0_[0]': '36' +'topmostSubform[0].Page1[0].Table_Part3[0].Row1[0].f1_37_0_[0]': '37' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_38_0_[0]': '38' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_39_0_[0]': '39' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_40_0_[0]': '40' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_41_0_[0]': '41' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_42_0_[0]': '42' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_43_0_[0]': '43' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_44_0_[0]': '44' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_45_0_[0]': '45' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_46_0_[0]': '46' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_47_0_[0]': '47' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_48_0_[0]': '48' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_49_0_[0]': '49' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_50_0_[0]': '50' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_51_0_[0]': '51' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_52_0_[0]': '52' +'topmostSubform[0].Page1[0].Table_Part3[0].Row2[0].f1_53_0_[0]': '53' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_54_0_[0]': '54' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_55_0_[0]': '55' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_56_0_[0]': '56' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_57_0_[0]': '57' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_58_0_[0]': '58' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_59_0_[0]': '59' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_60_0_[0]': '60' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_61_0_[0]': '61' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_62_0_[0]': '62' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_63_0_[0]': '63' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_64_0_[0]': '64' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_65_0_[0]': '65' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_66_0_[0]': '66' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_67_0_[0]': '67' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_68_0_[0]': '68' +'topmostSubform[0].Page1[0].Table_Part3[0].Row3[0].f1_69_0_[0]': '69' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_70_0_[0]': '70' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_71_0_[0]': '71' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_72_0_[0]': '72' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_73_0_[0]': '73' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_74_0_[0]': '74' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_75_0_[0]': '75' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_76_0_[0]': '76' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_77_0_[0]': '77' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_78_0_[0]': '78' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_79_0_[0]': '79' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_80_0_[0]': '80' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_81_0_[0]': '81' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_82_0_[0]': '82' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_83_0_[0]': '83' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_84_0_[0]': '84' +'topmostSubform[0].Page1[0].Table_Part3[0].Row4[0].f1_85_0_[0]': '85' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_86_0_[0]': '86' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_87_0_[0]': '87' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_88_0_[0]': '88' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_89_0_[0]': '89' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_90_0_[0]': '90' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_91_0_[0]': '91' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_92_0_[0]': '92' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_93_0_[0]': '93' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_94_0_[0]': '94' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_95_0_[0]': '95' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_96_0_[0]': '96' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_97_0_[0]': '97' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_98_0_[0]': '98' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_99_0_[0]': '99' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_100_0_[0]': '100' +'topmostSubform[0].Page1[0].Table_Part3[0].Row5[0].f1_101_0_[0]': '101' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_102_0_[0]': '102' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_103_0_[0]': '103' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_104_0_[0]': '104' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_105_0_[0]': '105' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_106_0_[0]': '106' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_107_0_[0]': '107' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_108_0_[0]': '108' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_109_0_[0]': '109' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_110_0_[0]': '110' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_111_0_[0]': '111' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_112_0_[0]': '112' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_113_0_[0]': '113' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_114_0_[0]': '114' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_115_0_[0]': '115' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_116_0_[0]': '116' +'topmostSubform[0].Page1[0].Table_Part3[0].Row6[0].f1_117_0_[0]': '117' +'topmostSubform[0].Page1[0].Table_Part3[0]': '118' +'topmostSubform[0]': '119' diff --git a/src/pdf.js b/src/pdf.js deleted file mode 100644 index 1fa86e3..0000000 --- a/src/pdf.js +++ /dev/null @@ -1,43 +0,0 @@ -const execFile = require('child_process').execFile; - -class PDF { - static cat({ source, pages, out }) { - return new Promise((resolve, reject) => { - // pdftk /forms/2018/f8938.pdf cat 1-2 3-end output out.pdf - const args = [ - source, - 'cat', - pages, - 'output', - out - ]; - execFile('pdftk', args, (error) => { - if (error) { - return reject(error); - } - resolve(); - }); - }); - } - - static join({ sources, out }) { - const files = (sources instanceof Array) ? sources : [sources]; - return new Promise((resolve, reject) => { - // pdftk /forms/2018/f8938.pdf cat 1-2 3-end output out.pdf - const args = [ - ...files, - 'cat', - 'output', - out - ]; - execFile('pdftk', args, (error) => { - if (error) { - return reject(error); - } - resolve(); - }); - }); - } -} - -module.exports = PDF; diff --git a/src/scripts/f1040.yaml b/src/scripts/f1040.yaml new file mode 100644 index 0000000..f7eebef --- /dev/null +++ b/src/scripts/f1040.yaml @@ -0,0 +1,218 @@ +# WARNING: f6251 has a circular dependency on f1040. f1040 line.12.b.whole +# depends on the final result, f6251 part.2.line.11.amt.whole. However, f6251 +# also depends on f1040. +# filing-status is a zero-based check box +filing.status: + value: ctx.financial.filingStatus.toLowerCase() + calculate: | + (ctx, value) => { + return { + 'single': { fill: '1', field: '0' }, + 'married filing jointly': { fill: '2', field: '1' }, + 'married filing separately': { fill: '3', field: '2' }, + 'head of household': { fill: '4', field: '3' }, + 'qualifying widow(er)': { fill: '5', field: '4' } + }[value]; + } + +name.first.and.initial: + 6: ctx.firstName + ' ' + ctx.middleInitial + +name.last: + 7: ctx.lastName + +ssn.nodash: + 8: ctx.ssn + +name.spouse.first: + value: ctx.spouse + calculate: | + (ctx, value) => { + if (!value) { + return { fill: '', field: '9' }; + } + return { + fill: value.firstName + ' ' + value.middleInitial, + field: '9' + }; + } + +name.spouse.last: + value: ctx.spouse + calculate: | + (ctx, value) => { + if (!value) { + return { fill: '', field: '10' }; + } + return { + fill: value.lastName, + field: '10' + }; + } + +ssn.spouse.nodash: + value: ctx.spouse + calculate: | + (ctx, value) => { + if (!value) { + return { fill: '', field: '11' }; + } + return { + fill: value.ssn, + field: '11' + }; + } + +address.street: + 12: ctx.address.street + +address.apt: + 13: ctx.address.apt + +address.city.zip: + 14: ctx.address.city + ' ' + ctx.address.postCode + ' ' + ctx.address.country + +foreign.country.name: + 15: ctx.address.countryCode + +foreign.province.county: + 16: ctx.address.county + +foreign.postal.code: + 17: ctx.address.postCode + +line.1.wages.salary.tips.whole: + 51: (ctx.financial.income / ctx.financial.averageExchangeRate) + +line.7b.total.income.whole: + # Add lines 1, 2b, 3b, 4b, 4d, 5b, 6, and 7a. This is your total income + 65: ctx.forms["f1040"]["line.1.wages.salary.tips.whole"] + +line.8a.adjustments.to.income.schedule.1.whole: + # Adjustments to income from Schedule 1, line 22 + 66: + +line.8b.adjusted.gross.income.whole: + # Subtract line 8a from line 7b. This is your adjusted gross income + 67: ctx.forms["f1040"]["line.7b.total.income.whole"] + +line.9.standard.deduction.whole: + # Single or Married filing separately, $12,200 + # • Married filing jointly or Qualifying widow(er), $24,400 + # • Head of household, $18,350 + # • If you checked any box under Standard Deduction, see instructions. + value: ctx.financial.filingStatus.toLowerCase() + calculate: | + (ctx, value) => { + return { + 'single': { fill: 12200, field: '68' }, + 'married filing separately': { fill: 12200, field: '68' }, + 'married filing jointly': { fill: 24400, field: '68' }, + 'qualifying widow(er)': { fill: 24400, field: '68' }, + 'head of household': { fill: 18350, field: '68' } + }[value]; + } + +line.11a.total.deductions.whole: + # Add lines 9 and 10 + 70: ctx.forms["f1040"]["line.9.standard.deduction.whole"] + +line.11b.taxable.income.whole: + 71: Math.max(0, + (ctx.forms["f1040"]["line.8b.adjusted.gross.income.whole"]) + - (ctx.forms["f1040"]["line.11a.total.deductions.whole"]) + ) + +line.12.a.tax.whole: + # **NOTE**: For future reference, this value is key to unlocking the whole + # thing. This field is also used in f1116. ** DO THIS FIRST ** + # This uses "Foreign Earned Income Tax Worksheet" and "Tax Computation + # Worksheet". However, if no deductions, etc. then, this value is + # effectively the one computed using the Tax Computation Worksheet. + # -------------------------------------------------------------------------- + # Foreign Tax (see int.) + # I believe that if in the case of foreign earned income, you never want the + # IRS to calculate your tax, so use the Foreign Earned Income Tax Worksheet. + # > If you claimed the foreign earned income exclusion, housing exclusion, + # > or housing deduction on Form 2555, you must figure your tax using the + # > Foreign Earned Income Tax Worksheet. + # On line 4 of the Foreign Earned Income Tax Worksheet + # If income < 100,000 use the Tax Table + # If income > 100,000 use the Tax Computation Worksheet + # + # TAX COMPUTATION WORKSHEET ("married filing separately") p74 + # Taxable income. If line 11b is | 11b (a) | Multiply amt. (b) | a * b | minus | = + # --------------------------------------------------------------------------------------------- + # At least $100,000 but not over $160,725 | $ | × 24% (0.24) | $ | $ 5,825.50 | $ + # Over $160,725 but not over $204,100 | $ | × 32% (0.32) | $ | $ 18,683.50 | $ + # Over $204,100 but not over $306,175 | $ | × 35% (0.35) | $ | $ 24,806.50 | $ + # Over $306,175 | $ | × 37% (0.37) | $ | $ 30,930.00 | $ + value: ctx.forms["f1040"]["line.11b.taxable.income.whole"] + calculate: | + (ctx, value) => { + let taxComputationWorksheetValue; + // Tax Computation Worksheet (married filing separately) + if (value >= 100000 && value < 160725) { + taxComputationWorksheetValue = value * 0.24 - 5825.50; + } else if (value >= 160725 && value < 204100) { + taxComputationWorksheetValue = value * 0.32 - 18683.50; + } else if (value >= 204100 && value < 306175) { + taxComputationWorksheetValue = value * 0.35 - 24806.50; + } else { + taxComputationWorksheetValue = value * 0.37 - 30930.00; + } + // include this amount on the entry space on Form 1040 or 1040-SR, line 12a + return { field: '76', fill: taxComputationWorksheetValue }; + } + +line.12.b.whole: + # Add Schedule 2, line 3, and line 12a and enter the total. Note this value + # on Schedule 2 is the AMT value from f6251. + 77: ctx.forms["f1040"]["line.12.a.tax.whole"] + + (ctx.forms["f6251"]["part.2.line.11.amt.whole"] || 0) # WARNING: needed + +line.13.b.schedule.3.whole: + # Add Schedule 3, line 7, and line 13a and enter the total + 79: ctx.forms["f1040s3"]["part.i.7.total.whole"] + +line.14.whole: + # Subtract line 13b from line 12b. If zero or less, enter -0- + 80: Math.max(0, + ctx.forms["f1040"]["line.12.b.whole"] + - ctx.forms["f1040"]["line.13.b.schedule.3.whole"] + ) + +line.16.total.tax.whole: + # Add lines 14 and 15. This is your total tax + 82: ctx.forms["f1040"]["line.14.whole"] + ctx.forms["f1040"]["line.15.whole"] + +line.18.d.whole: + # Schedule 3, line 14 + 87: ctx.forms["f1040s3"]["part.ii.14.refundable.credits.total.whole"] + +line.18.e.whole: + # Add lines 18a through 18d. These are your total other payments and + # refundable credits + 88: ctx.forms["f1040"]["line.18.a.whole"] + + ctx.forms["f1040"]["line.18.b.whole"] + + ctx.forms["f1040"]["line.18.c.whole"] + + ctx.forms["f1040"]["line.18.d.whole"] + +line.19.total.payments.whole: + # Add lines 17 and 18e. These are your total payments + 89: ctx.forms["f1040"]["line.17.a.whole"] + + ctx.forms["f1040"]["line.18.e.whole"] + +line.23.amount.you.owe.whole: + # Amount you owe. Subtract line 19 from line 16. For details on how to + # pay, see instructions + 98: ctx.forms["f1040"]["line.16.total.tax.whole"] + + ctx.forms["f1040"]["line.19.total.payments.whole"] + +third.party.designee: + # 100: 1 is "yes" + # 101: 2 is "no" + 101: 2 + +occupation: + 105: ctx.occupation diff --git a/src/scripts/f1040s3.yaml b/src/scripts/f1040s3.yaml new file mode 100644 index 0000000..4dbb6ba --- /dev/null +++ b/src/scripts/f1040s3.yaml @@ -0,0 +1,18 @@ +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 1: ctx.ssn + +part.i.1.foreign.tax.credit.whole: + 2: ctx.forms["f1116"]["line.33.foreign.tax.credit.whole"] + +part.i.7.total.whole: + 12: ctx.forms["f1040s3"]["part.i.1.foreign.tax.credit.whole"] + +part.ii.8.last.year.estimated.tax.payments.whole: + 13: 0 + +part.ii.14.refundable.credits.total.whole: + # Enter here and on Form 1040 or 1040-SR, line 18d + 24: 0 diff --git a/src/scripts/f1040s6.yaml b/src/scripts/f1040s6.yaml new file mode 100644 index 0000000..0b3b863 --- /dev/null +++ b/src/scripts/f1040s6.yaml @@ -0,0 +1,17 @@ +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn: + 1: ctx.ssn + +country: + 2: ctx.address.country + +province: + 3: ctx.address.city + +postCode: + 4: ctx.address.postCode + +designee: + 6: '2' diff --git a/src/scripts/f1040sb.yaml b/src/scripts/f1040sb.yaml new file mode 100644 index 0000000..82d2b70 --- /dev/null +++ b/src/scripts/f1040sb.yaml @@ -0,0 +1,38 @@ +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 1: ctx.ssn + +part.iii.7a: + value: '"yes"' + calculate: | + (ctx, value) => { + return { + yes: { fill: '1', field: '66' }, + no: { fill: '2', field: '67' } + }[value]; + } + +part.iii.7b: + value: '"yes"' + calculate: | + (ctx, value) => { + return { + yes: { fill: '1', field: '68' }, + no: { fill: '2', field: '69' } + }[value]; + } + +part.iii.7b.fincen.form.114.foreign.country: + 70: ctx.financial.countriesWithBankAccounts + +part.iii.8: + value: '"no"' + calculate: | + (ctx, value) => { + return { + yes: { fill: '1', field: '71' }, + no: { fill: '2', field: '72' } + }[value]; + } diff --git a/src/scripts/f1116.yaml b/src/scripts/f1116.yaml new file mode 100644 index 0000000..b1492cd --- /dev/null +++ b/src/scripts/f1116.yaml @@ -0,0 +1,186 @@ +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 1: ctx.ssn + +category.of.income: + value: + '"General category income"' + calculate: | + (ctx, value) => { + return { + 'section 951a income': { fill: '1', field: '2' }, + 'foreign branch income': { fill: '2', field: '3' }, + 'passive category income': { fill: '3', field: '4' }, + 'general category income': { fill: '4', field: '5' }, + 'section 901 (j) income': { fill: '5', field: '6' }, + 'certain income re-sourced by treaty': { fill: '6', field: '7' }, + 'Lump-sum distributions': { fill: '7', field: '8' } + }[value.toLowerCase()]; + } + +line.h: + 9: ctx.address.country + +line.i.A.foreign.country: + 10: ctx.address.country + +line.i.1a.text.1.gross.income.from.sources: + 13: '"From wages"' + +line.i.1a.text.2.gross.income.from.sources: + 14: + +line.i.1a.text.3.gross.income.from.sources: + 15: + +line.1a.A.whole: + 16: (ctx.financial.income / ctx.financial.averageExchangeRate) + +line.1a.total.whole: + 19: (ctx.financial.income / ctx.financial.averageExchangeRate) + +line.3a.A.whole: + # same as f1040 line.9.standard.deduction.whole, however, this gets filled + # before f1040 (circular dependency). + value: + ctx.financial.filingStatus.toLowerCase() + calculate: | + (ctx, value) => { + return { + 'single': { fill: 12200, field: '26' }, + 'married filing separately': { fill: 12200, field: '26' }, + 'married filing jointly': { fill: 24400, field: '26' }, + 'qualifying widow(er)': { fill: 24400, field: '26' }, + 'head of household': { fill: 18350, field: '26' } + }[value]; + } + +line.3c.A.whole: + 32: ctx.forms["f1116"]["line.3a.A.whole"] + ctx.forms["f1116"]["line.3b.A"] + +line.3d.A.whole: + 35: ctx.financial.income / ctx.financial.averageExchangeRate + +line.3e.A.whole: + 38: currency((ctx.financial.income / ctx.financial.averageExchangeRate)) + +line.3f.A: + 41: (ctx.forms["f1116"]["line.3d.A.whole"] / ctx.forms["f1116"]["line.3e.A.whole"] || 1).toFixed(4) + +line.3g.A.whole: + 44: ctx.forms["f1116"]["line.3c.A.whole"] * ctx.forms["f1116"]["line.3f.A"] + +line.6.A.whole: + 56: ctx.forms["f1116"]["line.2.A.whole"] + + ctx.forms["f1116"]["line.3g.A.whole"] + + ctx.forms["f1116"]["line.4a.A.whole"] + + ctx.forms["f1116"]["line.4b.A.whole"] + + ctx.forms["f1116"]["line.5.A.whole"] + +line.6.total.whole: + 59: ctx.forms["f1116"]["line.6.A.whole"] + +line.7.whole: + 61: ctx.forms["f1116"]["line.1a.total.whole"] - ctx.forms["f1116"]["line.6.total.whole"] + +part2.credit-claim-type: + value: + '"paid"' + calculate: | + (ctx, value) => { + return { + 'paid': { fill: 'Paid', field: '62' }, + 'accrued': { fill: 'Accrued', field: '63' } + }[value]; + } + +part2.A.l: + 66: ctx.financial.endOfTaxYear + +part2.A.t.whole: + 74: ctx.financial.incomeTax / ctx.financial.averageExchangeRate + +part2.A.u.whole: + 75: ctx.forms["f1116"]["part2.A.t.whole"] + +line.8.whole: + 97: ctx.forms["f1116"]["part2.A.u.whole"] + +line.9.whole: + 98: ctx.forms["f1116"]["line.8.whole"] + +line.10.carryback.whole: + value: + 1 + calculate: | + (ctx, value) => { + const carryovers = ctx.carryover.general; + const year = `${ctx.financial.endOfTaxYear.slice(-4) - 1}`; + const carryover = Object.keys(carryovers) + .filter(priorYear => priorYear <= year) + .reduce((acc, priorYear) => { + return acc + carryovers[priorYear]['foreign-taxes'] - + carryovers[priorYear].utilized; + }, 0); + return { + fill: carryover, + field: '99' + }; + } + +line.11.whole: + 100: ctx.forms["f1116"]["line.9.whole"] + ctx.forms["f1116"]["line.10.carryback.whole"] + +line.14.whole: + 103: ctx.forms["f1116"]["line.11.whole"] + ctx.forms["f1116"]["line.12.whole"] + ctx.forms["f1116"]["line.13.whole"] + +line.15.whole: + 104: ctx.forms["f1116"]["line.7.whole"] + +line.17.whole: + 106: ctx.forms["f1116"]["line.15.whole"] + ctx.forms["f1116"]["line.16.whole"] + +line.18.whole: + 107: ctx.forms["f1040"]["line.11b.taxable.income.whole"] + +line.19.whole: + # Divide line 17 by line 18. If line 17 is more than line 18, enter “1” + # This math works because if 17 > 18, then we get a value > 1 and Math.min + # will pick 1. + 108: Math.min(1, ctx.forms["f1116"]["line.17.whole"] / ctx.forms["f1116"]["line.18.whole"]) + +line.20.whole: + # Enter the total of Form 1040 or 1040-SR, line 12a + 109: ctx.forms["f1040"]["line.12.a.tax.whole"] + +line.21.whole: + # Multiply line 20 by line 19 (maximum amount of credit) + 110: ctx.forms["f1116"]["line.20.whole"] * ctx.forms["f1116"]["line.19.whole"] + +line.22.whole: + # Enter the smaller of line 14 or line 21 + 111: Math.min(ctx.forms["f1116"]["line.14.whole"], ctx.forms["f1116"]["line.21.whole"]) + +line.26.whole: + # Credit for taxes on "general category income" (this part is `category.of.income` above) + 115: ctx.forms["f1116"]["line.22.whole"] + +line.30.whole: + 119: ctx.forms["f1116"]["line.23.whole"] + + ctx.forms["f1116"]["line.24.whole"] + + ctx.forms["f1116"]["line.25.whole"] + + ctx.forms["f1116"]["line.26.whole"] + + ctx.forms["f1116"]["line.27.whole"] + + ctx.forms["f1116"]["line.28.whole"] + + ctx.forms["f1116"]["line.29.whole"] + +line.31.whole: + 120: Math.min(ctx.forms["f1116"]["line.20.whole"], ctx.forms["f1116"]["line.30.whole"]) + +line.32.whole: + 121: 0 + +line.33.foreign.tax.credit.whole: + 122: ctx.forms["f1116"]["line.31.whole"] - ctx.forms["f1116"]["line.32.whole"] diff --git a/src/scripts/f1116amt.yaml b/src/scripts/f1116amt.yaml new file mode 100644 index 0000000..305f8b2 --- /dev/null +++ b/src/scripts/f1116amt.yaml @@ -0,0 +1,175 @@ +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 1: ctx.ssn + +category.of.income: + value: + '"General category income"' + calculate: | + (ctx, value) => { + return { + 'section 951a income': { fill: '1', field: '2' }, + 'foreign branch income': { fill: '2', field: '3' }, + 'passive category income': { fill: '3', field: '4' }, + 'general category income': { fill: '4', field: '5' }, + 'section 901 (j) income': { fill: '5', field: '6' }, + 'certain income re-sourced by treaty': { fill: '6', field: '7' }, + 'Lump-sum distributions': { fill: '7', field: '8' } + }[value.toLowerCase()]; + } + +line.h: + 9: ctx.address.country + +line.i.A.foreign.country: + 10: ctx.address.country + +line.i.1a.text.1.gross.income.from.sources: + 13: '"From wages"' + +line.i.1a.text.2.gross.income.from.sources: + 14: '"(ALTERNATIVE MINIMUM TAX)"' + +line.i.1a.text.3.gross.income.from.sources: + 15: + +line.1a.A.whole: + 16: (ctx.financial.income / ctx.financial.averageExchangeRate) + +line.1a.total.whole: + 19: (ctx.financial.income / ctx.financial.averageExchangeRate) + +line.3a.A.whole: + # the main difference between f1116 and f1116amt is that AMT does not + # apply the standard deduction + 26: 0 + +line.3c.A.whole: + 32: ctx.forms["f1116amt"]["line.3a.A.whole"] + ctx.forms["f1116amt"]["line.3b.A"] + +line.3d.A.whole: + 35: ctx.financial.income / ctx.financial.averageExchangeRate + +line.3e.A.whole: + 38: currency((ctx.financial.income / ctx.financial.averageExchangeRate)) + +line.3f.A: + 41: (ctx.forms["f1116amt"]["line.3d.A.whole"] / ctx.forms["f1116amt"]["line.3e.A.whole"] || 1).toFixed(4) + +line.3g.A.whole: + 44: ctx.forms["f1116amt"]["line.3c.A.whole"] * ctx.forms["f1116amt"]["line.3f.A"] + +line.6.A.whole: + 56: ctx.forms["f1116amt"]["line.2.A.whole"] + + ctx.forms["f1116amt"]["line.3g.A.whole"] + + ctx.forms["f1116amt"]["line.4a.A.whole"] + + ctx.forms["f1116amt"]["line.4b.A.whole"] + + ctx.forms["f1116amt"]["line.5.A.whole"] + +line.6.total.whole: + 59: ctx.forms["f1116amt"]["line.6.A.whole"] + +line.7.whole: + 61: ctx.forms["f1116amt"]["line.1a.total.whole"] - ctx.forms["f1116amt"]["line.6.total.whole"] + +part2.credit-claim-type: + value: + '"paid"' + calculate: | + (ctx, value) => { + return { + 'paid': { fill: 'Paid', field: '62' }, + 'accrued': { fill: 'Accrued', field: '63' } + }[value]; + } + +part2.A.l: + 66: ctx.financial.endOfTaxYear + +part2.A.t.whole: + 74: ctx.financial.incomeTax / ctx.financial.averageExchangeRate + +part2.A.u.whole: + 75: ctx.forms["f1116amt"]["part2.A.t.whole"] + +line.8.whole: + 97: ctx.forms["f1116amt"]["part2.A.u.whole"] + +line.9.whole: + 98: ctx.forms["f1116amt"]["line.8.whole"] + +line.10.carryback.whole: + value: + 1 + calculate: | + (ctx, value) => { + const carryovers = ctx.carryover.general; + const year = `${ctx.financial.endOfTaxYear.slice(-4) - 1}`; + const carryover = Object.keys(carryovers) + .filter(priorYear => priorYear <= year) + .reduce((acc, priorYear) => { + return acc + carryovers[priorYear]['foreign-taxes'] - + carryovers[priorYear].utilized; + }, 0); + return { + fill: carryover, + field: '99' + }; + } + +line.11.whole: + 100: ctx.forms["f1116amt"]["line.9.whole"] + ctx.forms["f1116amt"]["line.10.carryback.whole"] + +line.14.whole: + 103: ctx.forms["f1116amt"]["line.11.whole"] + ctx.forms["f1116amt"]["line.12.whole"] + ctx.forms["f1116amt"]["line.13.whole"] + +line.15.whole: + 104: ctx.forms["f1116amt"]["line.7.whole"] + +line.17.whole: + 106: ctx.forms["f1116amt"]["line.15.whole"] + ctx.forms["f1116amt"]["line.16.whole"] + +line.18.whole: + 107: ctx.forms["f1040"]["line.11b.taxable.income.whole"] + +line.19.whole: + # Divide line 17 by line 18. If line 17 is more than line 18, enter “1” + # This math works because if 17 > 18, then we get a value > 1 and Math.min + # will pick 1. + 108: Math.min(1, ctx.forms["f1116amt"]["line.17.whole"] / ctx.forms["f1116amt"]["line.18.whole"]) + +line.20.whole: + # Enter the total of Form 1040 or 1040-SR, line 12a + 109: ctx.forms["f1040"]["line.12.a.tax.whole"] + +line.21.whole: + # Multiply line 20 by line 19 (maximum amount of credit) + 110: ctx.forms["f1116amt"]["line.20.whole"] * ctx.forms["f1116amt"]["line.19.whole"] + +line.22.whole: + # Enter the smaller of line 14 or line 21 + 111: Math.min(ctx.forms["f1116amt"]["line.14.whole"], ctx.forms["f1116amt"]["line.21.whole"]) + +line.26.whole: + # Credit for taxes on "general category income" (this part is `category.of.income` above) + 115: ctx.forms["f1116amt"]["line.22.whole"] + +line.30.whole: + 119: ctx.forms["f1116amt"]["line.23.whole"] + + ctx.forms["f1116amt"]["line.24.whole"] + + ctx.forms["f1116amt"]["line.25.whole"] + + ctx.forms["f1116amt"]["line.26.whole"] + + ctx.forms["f1116amt"]["line.27.whole"] + + ctx.forms["f1116amt"]["line.28.whole"] + + ctx.forms["f1116amt"]["line.29.whole"] + +line.31.whole: + 120: Math.min(ctx.forms["f1116amt"]["line.20.whole"], ctx.forms["f1116amt"]["line.30.whole"]) + +line.32.whole: + 121: 0 + +line.33.foreign.tax.credit.whole: + 122: ctx.forms["f1116amt"]["line.31.whole"] - ctx.forms["f1116amt"]["line.32.whole"] diff --git a/src/scripts/f6251.yaml b/src/scripts/f6251.yaml new file mode 100644 index 0000000..4f64b4d --- /dev/null +++ b/src/scripts/f6251.yaml @@ -0,0 +1,108 @@ +# WARNING: f6251 has a circular dependency on f1040. f1040 line.12.b.whole +# depends on the final result, f6251 part.2.line.11.amt.whole. However, f6251 +# also depends on f1040. +name: + 0: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 1: ctx.ssn + +part.1.line.1.f1040.11b.whole: + # Enter the amount from Form 1040 or 1040-SR, line 11b + 2: ctx.forms["f1040"]["line.11b.taxable.income.whole"] + +part.1.line.2a.f1040.9.whole: + # amount from Form 1040 or 1040-SR, line 9 + 3: ctx.forms["f1040"]["line.9.standard.deduction.whole"] + +part.1.line.4.amti.whole: + # Alternative minimum taxable income. Combine lines 1 through 3. (If married + # filing separately and line 4 is more than $733,700, see instructions.) + 24: ctx.forms["f6251"]["part.1.line.1.f1040.11b.whole"] + + (ctx.forms["f1040"]["line.9.standard.deduction.whole"] || 0) # WARNING: needed + +part.2.line.5.exemption.whole: + # Exemption. (If you were under age 24 at the end of 2019, see instructions.) + value: ctx.financial.filingStatus.toLowerCase() + calculate: | + (ctx, value) => { + const amti = ctx.forms["f6251"]["part.1.line.4.amti.whole"]; + let amt; + if (value === 'single' || value === 'head of household') { + if (amti < 510300) { + amt = 71700; + } + } else if (value === 'married filing jointly' + || value === 'qualifying widow(er)') { + if (amti < 1020600) { + amt = 111700; + } + } else if (value === 'married filing separately') { + if (amti < 510300) { + amt = 55850; + } + } + if (!amt) { + throw new Error('see instructions'); + } + return { + fill: amt, + field: '25' + }; + } + +part.2.line.6.whole: + # Subtract line 5 from line 4. If more than zero, go to line 7. If zero + # or less, enter -0- here and on lines 7, 9, and 11, and go to line 10 + 26: Math.max(0, ctx.forms["f6251"]["part.1.line.4.amti.whole"] - + ctx.forms["f6251"]["part.2.line.5.exemption.whole"]) + +part.2.line.7.whole: + # All others: If line 6 is $194,800 or less ($97,400 or less if married + # filing separately), multiply line 6 by 26% (0.26). Otherwise, multiply + # line 6 by 28% (0.28) and subtract $3,896 ($1,948 if married filing + # separately) from the result. + value: ctx.financial.filingStatus.toLowerCase() + calculate: | + (ctx, value) => { + const line6 = ctx.forms["f6251"]["part.2.line.6.whole"]; + let fill; + if (value !== 'married filing separately') { + if (line6 <= 194800) { + fill = line6 * 0.26; + } else { + fill = line6 * 0.28 - 3896; + } + } + else { // married filing separately + if (line6 <= 97400) { + fill = line6 * 0.26; + } else { + fill = line6 * 0.28 - 1948; + } + } + return { + fill, + field: '27' + }; + } + +part.2.line.8.amt.ftc.whole: + # Alternative minimum tax foreign tax credit (see instructions) + # Complete a separate AMT Form 1116 for each separate category of income. + # Write "AMT" and specify the category of income in the top margin of each + # Form 1116. + 28: ctx.forms["f1116amt"]["line.33.foreign.tax.credit.whole"] + +part.2.line.9.tentative.minimum.tax.whole: + # Tentative minimum tax. Subtract line 8 from line 7 + 29: ctx.forms["f6251"]["part.2.line.7.whole"] - + ctx.forms["f6251"]["part.2.line.8.amt.ftc.whole"] + +part.2.line.10.whole: + 30: ctx.forms["f1040"]["line.12.a.tax.whole"] - + ctx.forms["f1040s3"]["part.i.1.foreign.tax.credit.whole"] + +part.2.line.11.amt.whole: + 31: Math.max(0, ctx.forms["f6251"]["part.2.line.9.tentative.minimum.tax.whole"] - + ctx.forms["f6251"]["part.2.line.10.whole"]) diff --git a/src/scripts/f8938.yaml b/src/scripts/f8938.yaml new file mode 100644 index 0000000..168bf70 --- /dev/null +++ b/src/scripts/f8938.yaml @@ -0,0 +1,167 @@ +year: + 0: ctx.financial.endOfTaxYear.substr(-2) + +continuationStatements: + 5: ctx.accounts.length > 1 ? "1":"0" + +numberOfContinuationStatements: + 6: ctx.accounts.length - 1 + +name: + 7: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 8: ctx.ssn + +line.3: + 9: 1 + +part.1.line.1: + 15: ctx.accounts.filter((a) => a.type === "deposit").length + +part.1.line.2.whole: + 16: ctx.accounts.filter((a) => a.type === "deposit").reduce((agg, cur) => agg += cur.value, 0) / ctx.financial.treasuryExchangeRate + +part.1.line.3: + 17: ctx.accounts.filter((a) => a.type === "custodial").length + +part.1.line.4.whole: + 18: ctx.accounts.filter((a) => a.type === "custodial").reduce((agg, cur) => agg += cur.value, 0) / ctx.financial.treasuryExchangeRate + +part.1.line.5: + value: ctx.accounts.filter((a) => a.closed).length + calculate: | + (ctx, value) => { + if (value) { + return { + fill: '1', + field: '19' + } + } + return { + fill: '2', + field: '20' + } + } + +part.V.line.1: + value: ctx.account.type + calculate: | + (ctx, value) => { + if (value === 'deposit') { + return { + fill: '1', + field: '73' + } + } + return { + fill: '2', + field: '74' + } + } + +part.V.line.2: + 75: ctx.account.account + +part.V.line.3.a: + 76: ctx.account.opened ? "1":"" + +part.V.line.3.b: + 77: ctx.account.closed ? "1":"" + +part.V.line.3.c: + 78: ctx.account.joint ? "1":"" + +part.V.line.3.d: + 79: ctx.account.tax ? "":"1" + +part.V.line.4.whole: + 80: ctx.account.value / ctx.financial.treasuryExchangeRate + +part.V.line.5.yes: + 81: 1 + +part.V.line.5.no: + 82: + +part.V.line.6.a: + 83: ctx.account.currency + +part.V.line.6.b: + 84: ctx.financial.treasuryExchangeRate + +part.V.line.6.c: + 85: + +part.V.line.7.a: + 86: ctx.account.name + +part.V.line.8: + 91: ctx.account.address + +part.V.line.9: + 92: ctx.account.city + +contd.V.page: + 132: ctx.page + +contd.V.name: + 133: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +contd.V.ssn.nodash: + 134: ctx.ssn + +contd.V.line.1: + value: ctx.account.type + calculate: | + (ctx, value) => { + if (value === 'deposit') { + return { + fill: '1', + field: '135' + } + } + return { + fill: '2', + field: '136' + } + } + +contd.V.line.2: + 137: ctx.account.account + +contd.V.line.3.a: + 138: ctx.account.opened ? "1":"" + +contd.V.line.3.b: + 139: ctx.account.closed ? "1":"" + +contd.V.line.3.c: + 140: ctx.account.joint ? "1":"" + +contd.V.line.3.d: + 141: ctx.account.tax ? "":"1" + +contd.V.line.4.whole: + 142: ctx.account.value / ctx.financial.treasuryExchangeRate + +contd.V.line.5: + 143: 1 + +contd.V.line.6.a: + 145: ctx.account.currency + +contd.V.line.6.b: + 146: ctx.financial.treasuryExchangeRate + +contd.V.line.6.c: + 147: + +contd.V.line.7.a: + 148: ctx.account.name + +contd.V.line.8: + 153: ctx.account.address + +contd.V.line.9: + 154: ctx.account.city diff --git a/src/scripts/f8965.yaml b/src/scripts/f8965.yaml new file mode 100644 index 0000000..d3219ac --- /dev/null +++ b/src/scripts/f8965.yaml @@ -0,0 +1,46 @@ +name: + 2: ctx.firstName + ' ' + ctx.middleInitial + ' ' + ctx.lastName + +ssn.nodash: + 3: ctx.ssn + +line.1.exemption-certificate-number: + 4: '"C"' + +line.8.a: + 22: ctx.firstName + ' ' + ctx.lastName + +line.8.b: + 23: ctx.ssn + # value: + # ${ctx.ssn} + # calculate: | + # (ctx, value) => { + # return { + # fill: value.replace(/-/g, ''), + # field: '23' + # }; + # } + +# Page 13: If you meet one of these conditions, you qualify for this exemption +# even if you have a social security number (SSN). To claim this coverage +# exemption, enter code “C” +line.8.c: + value: '"C"' + calculate: | + (ctx, value) => { + return { + fill: value.replace(/-/g, ''), + field: '24' + }; + } + +line.8.d: + value: '"X"' + calculate: | + (ctx, value) => { + return { + fill: value.replace(/-/g, ''), + field: '25' + }; + } diff --git a/src/utils.js b/src/utils.js deleted file mode 100644 index 94fce2e..0000000 --- a/src/utils.js +++ /dev/null @@ -1,12 +0,0 @@ -function toCurrency(val) { - return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); -} - -function parseCurrency(val) { - return parseInt(val.replace && val.replace(',', '') || val); -} - -module.exports = { - toCurrency, - parseCurrency -}; diff --git a/test/pdf.test.js b/test/pdf.test.js deleted file mode 100644 index d9fd7cf..0000000 --- a/test/pdf.test.js +++ /dev/null @@ -1,53 +0,0 @@ -const { expect } = require('chai'); -const simple = require('simple-mock'); -const mock = require('mock-require'); -const PDF = require('../src/pdf'); - -describe('PDF', () => { - it('should export PDF functions', () => { - expect(PDF).to.be.a('function'); - expect(PDF.cat).to.be.a('function'); - expect(PDF.cat).to.have.length(1); - expect(PDF.join).to.be.a('function'); - expect(PDF.join).to.have.length(1); - }); - - it('should cat one PDF file', async () => { - const source = 'foo.pdf'; - const out = 'bar.pdf'; - const execFile = simple.mock().callbackWith(null); - mock('child_process', { execFile }); - const PDF = mock.reRequire('../src/pdf'); - - await PDF.cat({ source, pages: 3, out }); - - expect(execFile.calls).to.have.length(1); - expect(execFile.lastCall.args[0]).to.equal('pdftk'); - expect(execFile.lastCall.args[1].join(' ')) - .to.deep.equal('foo.pdf cat 3 output bar.pdf'); - }); - - it('should join multiple PDF files', async () => { - const sources = [ 'foo1.pdf', 'foo2.pdf' ]; - const out = 'bar.pdf'; - const execFile = simple.mock().callbackWith(null); - mock('child_process', { execFile }); - const PDF = mock.reRequire('../src/pdf'); - - await PDF.join({ sources, out }); - - expect(execFile.calls).to.have.length(1); - expect(execFile.lastCall.args.slice(0, 2)).to.deep.equal([ - 'pdftk', - [ - 'foo1.pdf', - 'foo2.pdf', - 'cat', - 'output', - 'bar.pdf' - ] - ]); - }); - - -}); diff --git a/test/utils.test.js b/test/utils.test.js deleted file mode 100644 index 907225a..0000000 --- a/test/utils.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { expect } = require('chai'); -const utils = require('../src/utils'); - -describe('utils', () => { - it('should export utils functions', () => { - expect(Object.keys(utils)).to.deep.equal([ - 'toCurrency', - 'parseCurrency' - ]); - }); - - it('should convert currency', () => { - expect(utils.toCurrency('1234.00')).to.equal('1,234.00'); - expect(utils.toCurrency('1234')).to.equal('1,234'); - expect(utils.toCurrency('1234567')).to.equal('1,234,567'); - }); - - it('should parse currency', () => { - expect(utils.parseCurrency('1234.00')).to.equal(1234.00); - expect(utils.parseCurrency('1234')).to.equal(1234.00); - expect(utils.parseCurrency('1234567')).to.equal(1234567.00); - }); -});