From 5d8dad252d178844127102a15ac1f39e43c5de8f Mon Sep 17 00:00:00 2001 From: Igor Magdich Date: Tue, 28 Nov 2023 16:21:19 +0200 Subject: [PATCH 1/4] update dfjs-dist to version ^4.0.269 --- .eslintrc | 3 +- .mocharc.js | 6 + __tests__/buffer.pdf.to.buffer.ts | 41 - __tests__/pdf.pages.to.file.ts | 23 - __tests__/pdf.to.buffer.ts | 50 +- __tests__/pdf.to.file.ts | 27 +- __tests__/pdf.to.png.exceptions.ts | 29 +- __tests__/props.to.pdf.doc.init.params.ts | 4 +- __tests__/protected.pdf.ts | 8 +- dockerfile | 3 +- jest.config.ts | 12 - package-lock.json | 5466 +++++---------------- package.json | 36 +- src/index.ts | 4 +- src/node.canvas.factory.ts | 18 + src/pdf.to.png.ts | 11 +- src/props.to.pdf.doc.init.params.ts | 5 + tsconfig.json | 17 +- tsconfig.prod.json | 4 + tsconfig.test.json | 5 + 20 files changed, 1509 insertions(+), 4263 deletions(-) create mode 100644 .mocharc.js delete mode 100644 __tests__/buffer.pdf.to.buffer.ts delete mode 100644 __tests__/pdf.pages.to.file.ts delete mode 100644 jest.config.ts create mode 100644 tsconfig.prod.json create mode 100644 tsconfig.test.json diff --git a/.eslintrc b/.eslintrc index 7f06687..ee9f7ce 100644 --- a/.eslintrc +++ b/.eslintrc @@ -10,5 +10,6 @@ "rules": { "@typescript-eslint/no-var-requires": 0, "@typescript-eslint/no-explicit-any": 0 - } + }, + "ignorePatterns": ["*.js", "*.d.ts"] } diff --git a/.mocharc.js b/.mocharc.js new file mode 100644 index 0000000..13fb271 --- /dev/null +++ b/.mocharc.js @@ -0,0 +1,6 @@ +module.exports = { + reporter: 'spec', + timeout: '60000', + spec: ['out/__tests__/**/*.js'], + parallel: true +}; diff --git a/__tests__/buffer.pdf.to.buffer.ts b/__tests__/buffer.pdf.to.buffer.ts deleted file mode 100644 index 1473a6f..0000000 --- a/__tests__/buffer.pdf.to.buffer.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { existsSync, readFileSync } from 'node:fs'; -import { parse, resolve } from 'node:path'; -import { PngPageOutput, pdfToPng } from '../src'; -import { comparePNG } from '../src/compare.png'; -import { PDF_TO_PNG_OPTIONS_DEFAULTS } from '../src/const'; - -const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); -const pdfBuffer: Buffer = readFileSync(pdfFilePath); - -test(`should convert PDF To PNG without saving to file, output file mask is defined`, async () => { - const pngPages: PngPageOutput[] = await pdfToPng(pdfBuffer, { - viewportScale: 2.0, - outputFileMask: 'large_pdf', - }); - - pngPages.forEach((pngPage: PngPageOutput) => { - const expectedFilePath: string = resolve('test-data/pdf.to.buffer/expected', pngPage.name); - const compareResult: number = comparePNG(pngPage.content, expectedFilePath); - - expect(existsSync(pngPage.path)).toBe(false); - expect(compareResult).toBe(0); - }); -}); - -test(`should convert PDF To PNG without saving to file, output file mask is not defined`, async () => { - const pngPages: PngPageOutput[] = await pdfToPng(pdfBuffer, { - viewportScale: 2.0, - }); - - pngPages.forEach((pngPage: PngPageOutput, index: number) => { - const expectedFilePath: string = resolve( - 'test-data/pdf.to.buffer/expected', - pngPage.name.replace(PDF_TO_PNG_OPTIONS_DEFAULTS.outputFileMask as string, parse(pdfFilePath).name), - ); - const compareResult: number = comparePNG(pngPage.content, expectedFilePath); - - expect(pngPage.name).toBe(`${PDF_TO_PNG_OPTIONS_DEFAULTS.outputFileMask as string}_page_${index + 1}.png`); - expect(existsSync(pngPage.path)).toBe(false); - expect(compareResult).toBe(0); - }); -}); diff --git a/__tests__/pdf.pages.to.file.ts b/__tests__/pdf.pages.to.file.ts deleted file mode 100644 index 4dc2ee7..0000000 --- a/__tests__/pdf.pages.to.file.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { readFileSync } from 'node:fs'; -import { resolve } from 'node:path'; -import { pdfToPng, PngPageOutput } from '../src'; -import { comparePNG } from '../src/compare.png'; - -test(`should convert specific PDF pages To PNG files`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); - const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { - outputFolder: 'test-results/pdf.pages.to.file/actual', - pagesToProcess: [-1, 0, 2, 5, 7, 99, 999999], - }); - - // Should skip page 99 since it's beyond PDF bounds - expect(pngPages).toHaveLength(3); - - pngPages.forEach((pngPage: PngPageOutput) => { - const expectedFilePath: string = resolve('test-data/pdf.to.file/expected', pngPage.name); - const actualFileContent: Buffer = readFileSync(pngPage.path); - const compareResult: number = comparePNG(actualFileContent, expectedFilePath); - - expect(compareResult).toBe(0); - }); -}); diff --git a/__tests__/pdf.to.buffer.ts b/__tests__/pdf.to.buffer.ts index 178bc21..abaef2a 100644 --- a/__tests__/pdf.to.buffer.ts +++ b/__tests__/pdf.to.buffer.ts @@ -1,19 +1,57 @@ -import { existsSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { expect } from 'chai'; +import { test } from 'mocha'; +import { existsSync, readFileSync } from 'node:fs'; +import { parse, resolve } from 'node:path'; import { PngPageOutput, pdfToPng } from '../src'; import { comparePNG } from '../src/compare.png'; +import { PDF_TO_PNG_OPTIONS_DEFAULTS } from '../src/const'; + +const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); +const pdfBuffer: Buffer = readFileSync(pdfFilePath); test(`should convert PDF To PNG buffer (without saving to file)`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { viewportScale: 2.0, }); pngPages.forEach((pngPage: PngPageOutput) => { - const expectedFilePath: string = resolve('test-data/pdf.to.buffer/expected', pngPage.name); + const expectedFilePath: string = resolve('./test-data/pdf.to.buffer/expected', pngPage.name); + const compareResult: number = comparePNG(pngPage.content, expectedFilePath); + + expect(existsSync(pngPage.path)).to.equal(false); + expect(compareResult).to.equal(0); + }); +}); + +test(`should convert PDF To PNG without saving to file, output file mask is defined`, async () => { + const pngPages: PngPageOutput[] = await pdfToPng(pdfBuffer, { + viewportScale: 2.0, + outputFileMask: 'large_pdf', + }); + + pngPages.forEach((pngPage: PngPageOutput) => { + const expectedFilePath: string = resolve('./test-data/pdf.to.buffer/expected', pngPage.name); + const compareResult: number = comparePNG(pngPage.content, expectedFilePath); + + expect(existsSync(pngPage.path)).to.equal(false); + expect(compareResult).to.equal(0); + }); +}); + +test(`should convert PDF To PNG without saving to file, output file mask is not defined`, async () => { + const pngPages: PngPageOutput[] = await pdfToPng(pdfBuffer, { + viewportScale: 2.0, + }); + + pngPages.forEach((pngPage: PngPageOutput, index: number) => { + const expectedFilePath: string = resolve( + 'test-data/pdf.to.buffer/expected', + pngPage.name.replace(PDF_TO_PNG_OPTIONS_DEFAULTS.outputFileMask as string, parse(pdfFilePath).name), + ); const compareResult: number = comparePNG(pngPage.content, expectedFilePath); - expect(existsSync(pngPage.path)).toBe(false); - expect(compareResult).toBe(0); + expect(pngPage.name).to.equal(`${PDF_TO_PNG_OPTIONS_DEFAULTS.outputFileMask as string}_page_${index + 1}.png`); + expect(existsSync(pngPage.path)).to.equal(false); + expect(compareResult).to.equal(0); }); }); diff --git a/__tests__/pdf.to.file.ts b/__tests__/pdf.to.file.ts index 6d415ee..cdc0516 100644 --- a/__tests__/pdf.to.file.ts +++ b/__tests__/pdf.to.file.ts @@ -1,19 +1,40 @@ +import { expect } from 'chai'; +import { test } from 'mocha'; import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { PngPageOutput, pdfToPng } from '../src'; import { comparePNG } from '../src/compare.png'; test(`should convert PDF To PNG files`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); + const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { outputFolder: 'test-results/pdf.to.file/actual', }); pngPages.forEach((pngPage: PngPageOutput) => { - const expectedFilePath: string = resolve('test-data/pdf.to.file/expected', pngPage.name); + const expectedFilePath: string = resolve('./test-data/pdf.to.file/expected', pngPage.name); const actualFileContent: Buffer = readFileSync(pngPage.path); const compareResult: number = comparePNG(actualFileContent, expectedFilePath); - expect(compareResult).toBe(0); + expect(compareResult).to.equal(0); + }); +}); + +test(`should convert specific PDF pages To PNG files`, async () => { + const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); + const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { + outputFolder: 'test-results/pdf.pages.to.file/actual', + pagesToProcess: [-1, 0, 2, 5, 7, 99, 999999], + }); + + // Should skip page 99 since it's beyond PDF bounds + expect(pngPages.length).to.equal(3); + + pngPages.forEach((pngPage: PngPageOutput) => { + const expectedFilePath: string = resolve('./test-data/pdf.to.file/expected', pngPage.name); + const actualFileContent: Buffer = readFileSync(pngPage.path); + const compareResult: number = comparePNG(actualFileContent, expectedFilePath); + + expect(compareResult).to.equal(0); }); }); diff --git a/__tests__/pdf.to.png.exceptions.ts b/__tests__/pdf.to.png.exceptions.ts index e4340ca..514ff9a 100644 --- a/__tests__/pdf.to.png.exceptions.ts +++ b/__tests__/pdf.to.png.exceptions.ts @@ -1,26 +1,31 @@ +import { test } from 'mocha'; import { resolve } from 'node:path'; import { pdfToPng } from '../src'; +const chai = require('chai'); +const expect = chai.expect; +chai.use(require('chai-as-promised')); + test(`should throw error when page index = 0 is requested`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); + const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); - await expect(async () => { - await pdfToPng(pdfFilePath, { pagesToProcess: [0, 1, 2], strictPagesToProcess: true }); - }).rejects.toThrow('Invalid pages requested'); + await expect(pdfToPng(pdfFilePath, { pagesToProcess: [0, 1, 2], strictPagesToProcess: true })).to.be.rejectedWith( + Error, + ); }); test(`should throw error when page index < 1 is requested`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); + const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); - await expect(async () => { - await pdfToPng(pdfFilePath, { pagesToProcess: [1, 2, -1], strictPagesToProcess: true }); - }).rejects.toThrow('Invalid pages requested'); + await expect(pdfToPng(pdfFilePath, { pagesToProcess: [1, 2, -1], strictPagesToProcess: true })).to.be.rejectedWith( + Error, + ); }); test(`should throw error when page index > then file contains and strictPagesToProcess is enabled`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf.pdf'); + const pdfFilePath: string = resolve('./test-data/large_pdf.pdf'); - await expect(async () => { - await pdfToPng(pdfFilePath, { pagesToProcess: [1, 2, 1000], strictPagesToProcess: true }); - }).rejects.toThrow('Invalid pages requested'); + await expect( + pdfToPng(pdfFilePath, { pagesToProcess: [1, 2, 1000], strictPagesToProcess: true }), + ).to.be.rejectedWith(Error); }); diff --git a/__tests__/props.to.pdf.doc.init.params.ts b/__tests__/props.to.pdf.doc.init.params.ts index b48755e..005cdd4 100644 --- a/__tests__/props.to.pdf.doc.init.params.ts +++ b/__tests__/props.to.pdf.doc.init.params.ts @@ -1,3 +1,5 @@ +import { expect } from 'chai'; +import { test } from 'mocha'; import { DocumentInitParameters } from 'pdfjs-dist/types/src/display/api'; import { propsToPdfDocInitParams } from '../src/props.to.pdf.doc.init.params'; import { PdfToPngOptions } from '../src/types/pdf.to.png.options'; @@ -157,6 +159,6 @@ for (const testData of testDataArray) { test(`should convert props to PdfDocInitParams when ${testData.id}`, async () => { const actualPdfDocInitParams: DocumentInitParameters = propsToPdfDocInitParams(testData.props); - expect(actualPdfDocInitParams).toStrictEqual(testData.expectedPdfDocInitParams); + expect(actualPdfDocInitParams).to.deep.equal(testData.expectedPdfDocInitParams); }); } diff --git a/__tests__/protected.pdf.ts b/__tests__/protected.pdf.ts index 8c25ca3..e746be0 100644 --- a/__tests__/protected.pdf.ts +++ b/__tests__/protected.pdf.ts @@ -1,18 +1,20 @@ +import { expect } from 'chai'; +import { test } from 'mocha'; import { resolve } from 'node:path'; import { pdfToPng, PngPageOutput } from '../src'; import { comparePNG } from '../src/compare.png'; test(`should convert protected PDF To PNG`, async () => { - const pdfFilePath: string = resolve('test-data/large_pdf-protected.pdf'); + const pdfFilePath: string = resolve('./test-data/large_pdf-protected.pdf'); const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { outputFolder: 'test-results/protected.pdf/actual', pdfFilePassword: 'uES69xm545C/HP!', }); pngPages.forEach((pngPage: PngPageOutput) => { - const expectedFilePath: string = resolve('test-data/protected.pdf/expected', pngPage.name); + const expectedFilePath: string = resolve('./test-data/protected.pdf/expected', pngPage.name); const compareResult: number = comparePNG(pngPage.content, expectedFilePath); - expect(compareResult).toBe(0); + expect(compareResult).to.equal(0); }); }); diff --git a/dockerfile b/dockerfile index 2d2373b..8a4040f 100644 --- a/dockerfile +++ b/dockerfile @@ -1,7 +1,8 @@ FROM node:20 +RUN apt-get update && apt-get install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev WORKDIR /usr/pkg/ COPY . . -RUN apt-get update && apt-get install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev RUN npm ci +RUN npm run build CMD npm run docker:test diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index a6bf77a..0000000 --- a/jest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { Config } from 'jest'; - -export default async (): Promise => { - return { - testTimeout: 30000, - collectCoverage: true, - coverageDirectory: './test-results/coverage', - preset: 'ts-jest', - testEnvironment: 'node', - verbose: false, - }; -}; diff --git a/package-lock.json b/package-lock.json index f2bf9b9..2078a6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,29 +1,33 @@ { "name": "pdf-to-png-converter", - "version": "3.1.0", + "version": "3.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pdf-to-png-converter", - "version": "3.1.0", + "version": "3.2.0", "license": "MIT", "dependencies": { "canvas": "^2.11.2", - "pdfjs-dist": "^3.8.162" + "pdfjs-dist": "^4.0.269" }, "devDependencies": { - "@types/jest": "^29.5.3", - "@types/node": "^20.4.2", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "@typescript-eslint/parser": "^6.1.0", - "eslint": "^8.45.0", - "jest": "^29.6.1", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "@types/node": "^20.10.0", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", + "chai": "^4.3.10", + "chai-as-promised": "^7.1.1", + "eslint": "^8.54.0", + "mocha": "^10.2.0", "png-visual-compare": "^1.2.0", - "rimraf": "^5.0.1", - "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "^5.1.6" + "typescript": "^5.3.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -35,3827 +39,1552 @@ "node": ">=0.10.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.10.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dependencies": { - "@babel/types": "^7.22.5" + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true }, - "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "node_modules/@types/node": { + "version": "20.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", + "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "undici-types": "~5.26.4" } }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", + "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.13.1", + "@typescript-eslint/type-utils": "6.13.1", + "@typescript-eslint/utils": "6.13.1", + "@typescript-eslint/visitor-keys": "6.13.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/highlight/node_modules/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==", + "node_modules/@typescript-eslint/parser": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", + "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@typescript-eslint/scope-manager": "6.13.1", + "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/typescript-estree": "6.13.1", + "@typescript-eslint/visitor-keys": "6.13.1", + "debug": "^4.3.4" }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", + "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/visitor-keys": "6.13.1" }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/highlight/node_modules/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==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", + "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, + "@typescript-eslint/typescript-estree": "6.13.1", + "@typescript-eslint/utils": "6.13.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@typescript-eslint/types": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", + "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", "dev": true, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", + "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/visitor-keys": "6.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@typescript-eslint/utils": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", + "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.13.1", + "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/typescript-estree": "6.13.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", + "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@typescript-eslint/types": "6.13.1", + "eslint-visitor-keys": "^3.4.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "bin": { + "acorn": "bin/acorn" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "debug": "4" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 6.0.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "node_modules/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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/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 + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "*" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 8.10.0" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10.10.0" + "node": ">= 6" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=10" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/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, - "engines": { - "node": ">=12" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/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 + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ansi-regex": "^6.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=12" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "mimic-response": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">=6" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "dependencies": { - "p-limit": "^2.2.0" - }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@jest/console": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz", - "integrity": "sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", - "slash": "^3.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/core": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz", - "integrity": "sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==", + "node_modules/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==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "dependencies": { - "@jest/console": "^29.6.1", - "@jest/reporters": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.6.1", - "jest-haste-map": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-resolve-dependencies": "^29.6.1", - "jest-runner": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", - "jest-watcher": "^29.6.1", - "micromatch": "^4.0.4", - "pretty-format": "^29.6.1", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6" } }, - "node_modules/@jest/environment": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz", - "integrity": "sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.1" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/expect": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz", - "integrity": "sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==", + "node_modules/eslint": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", "dev": true, "dependencies": { - "expect": "^29.6.1", - "jest-snapshot": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz", - "integrity": "sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz", - "integrity": "sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.1", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.6.1", - "jest-mock": "^29.6.1", - "jest-util": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz", - "integrity": "sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/expect": "^29.6.1", - "@jest/types": "^29.6.1", - "jest-mock": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz", - "integrity": "sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", - "jest-worker": "^29.6.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", - "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", - "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz", - "integrity": "sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==", - "dev": true, - "dependencies": { - "@jest/console": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz", - "integrity": "sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.6.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz", - "integrity": "sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.1", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", - "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", - "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", - "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", - "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", - "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", - "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", - "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", - "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", - "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.6.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/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 - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.467", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz", - "integrity": "sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/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==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz", - "integrity": "sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.6.1", - "@types/node": "*", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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 - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" + "text-table": "^0.2.0" }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/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 - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" + "url": "https://opencollective.com/eslint" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "has": "^1.0.3" + "estraverse": "^5.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=4.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/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 }, - "node_modules/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==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "reusify": "^1.0.4" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "node_modules/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==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz", - "integrity": "sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "@jest/core": "^29.6.1", - "@jest/types": "^29.6.1", - "import-local": "^3.0.2", - "jest-cli": "^29.6.1" - }, "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "flat": "cli.js" } }, - "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jest-circus": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz", - "integrity": "sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/expect": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.6.1", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", - "p-limit": "^3.1.0", - "pretty-format": "^29.6.1", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz", - "integrity": "sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==", - "dev": true, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "@jest/core": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/types": "^29.6.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "minipass": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/jest-config": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz", - "integrity": "sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==", - "dev": true, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.6.1", - "@jest/types": "^29.6.1", - "babel-jest": "^29.6.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.6.1", - "jest-environment-node": "^29.6.1", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-runner": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.6.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", - "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { - "detect-newline": "^3.0.0" + "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" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-each": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", - "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.6.1", - "pretty-format": "^29.6.1" + "is-glob": "^4.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-environment-node": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", - "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/fake-timers": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.1", - "jest-util": "^29.6.1" + "type-fest": "^0.20.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", - "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/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, - "dependencies": { - "@jest/types": "^29.6.1", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.1", - "jest-worker": "^29.6.1", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz", - "integrity": "sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/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, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "he": "bin/he" } }, - "node_modules/jest-matcher-utils": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", - "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", - "dev": true, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.6.1", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-message-util": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz", - "integrity": "sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==", + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.6.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 4" } }, - "node_modules/jest-mock": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz", - "integrity": "sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-util": "^29.6.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, "engines": { "node": ">=6" }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-resolve": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", - "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", - "dev": true, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz", - "integrity": "sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/jest-runner": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", - "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.6.1", - "@jest/environment": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.6.1", - "jest-haste-map": "^29.6.1", - "jest-leak-detector": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-resolve": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-util": "^29.6.1", - "jest-watcher": "^29.6.1", - "jest-worker": "^29.6.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz", - "integrity": "sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==", + "node_modules/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==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/fake-timers": "^29.6.1", - "@jest/globals": "^29.6.1", - "@jest/source-map": "^29.6.0", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-mock": "^29.6.1", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-snapshot": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz", - "integrity": "sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.6.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.1", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", - "natural-compare": "^1.4.0", - "pretty-format": "^29.6.1", - "semver": "^7.5.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", - "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "node_modules/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==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", - "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.6.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "node_modules/jest-watcher": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", - "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "@jest/test-result": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.6.1", - "string-length": "^4.0.1" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", - "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.1", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/js-yaml": { @@ -3870,22 +1599,10 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "node_modules/json-schema-traverse": { @@ -3900,34 +1617,13 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "json-buffer": "3.0.1" } }, "node_modules/levn": { @@ -3943,12 +1639,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3964,25 +1654,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/make-dir": { @@ -4013,21 +1724,6 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4050,15 +1746,6 @@ "node": ">=8.6" } }, - "node_modules/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, - "engines": { - "node": ">=6" - } - }, "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", @@ -4094,38 +1781,115 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/ms": { @@ -4134,9 +1898,21 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/natural-compare": { "version": "1.4.0", @@ -4144,16 +1920,10 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -4169,18 +1939,6 @@ } } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -4204,18 +1962,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -4243,21 +1989,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -4305,15 +2036,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4326,24 +2048,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4370,37 +2074,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", - "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4419,10 +2092,19 @@ "node": ">=8" } }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/pdfjs-dist": { - "version": "3.8.162", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.8.162.tgz", - "integrity": "sha512-Do0Lpuk1ItcNnIPr9MM+/jnnMOb4i6asRX7gVnL6fFUW1QPC7ERfHQkbhF7jkAri1o6GxttX0Yn7ZhOmpFUeGA==", + "version": "4.0.269", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.0.269.tgz", + "integrity": "sha512-jjWO56tcOjnmPqDf8PmXDeZ781AGvpHMYI3HhNtaFKTRXXPaD1ArSrhVe38/XsrIQJ0onISCND/vuXaWJkiDWw==", "engines": { "node": ">=18" }, @@ -4431,12 +2113,6 @@ "path2d-polyfill": "^2.0.1" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -4449,15 +2125,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/pixelmatch": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", @@ -4479,70 +2146,6 @@ "node": ">=12.13.0" } }, - "node_modules/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, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/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, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/png-visual-compare": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/png-visual-compare/-/png-visual-compare-1.2.0.tgz", @@ -4571,70 +2174,15 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", - "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4655,11 +2203,14 @@ } ] }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } }, "node_modules/readable-stream": { "version": "3.6.2", @@ -4674,140 +2225,55 @@ "node": ">= 6" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", - "dev": true, - "dependencies": { - "glob": "^10.2.5" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/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, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { - "brace-expansion": "^2.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "bin": { + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4869,22 +2335,15 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { + "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "randombytes": "^2.1.0" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -4945,12 +2404,6 @@ "simple-concat": "^1.0.0" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4960,52 +2413,6 @@ "node": ">=8" } }, - "node_modules/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -5014,19 +2421,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5040,21 +2434,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5066,37 +2445,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5121,22 +2469,10 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -5149,46 +2485,12 @@ "node": ">=10" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/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, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5207,9 +2509,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, "engines": { "node": ">=16.13.0" @@ -5218,49 +2520,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -5304,6 +2563,15 @@ } } }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5338,9 +2606,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5350,35 +2618,11 @@ "node": ">=14.17" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/uri-js": { "version": "4.4.1", @@ -5400,35 +2644,6 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -5466,25 +2681,13 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", @@ -5506,19 +2709,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5529,36 +2719,50 @@ } }, "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^8.0.1", + "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^4.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/yn": { diff --git a/package.json b/package.json index 7ee58c1..a565d4c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdf-to-png-converter", - "version": "3.1.0", + "version": "3.2.0", "description": "Node.js utility to convert PDF file/buffer pages to PNG files/buffers with no native dependencies.", "keywords": [ "pdf", @@ -24,36 +24,40 @@ "files": [ "/out" ], + "engines": { + "node": ">=16.0.0" + }, "scripts": { "build": "npm run clean && npm run tsc", - "clean": "rimraf ./out ./coverage ./test-results", + "clean": "npx rimraf ./out ./coverage ./test-results", "docker:build": "docker build --compress -t test-pdf-to-png-converter .", "predocker:run": "npm run clean", "docker:run": "docker run --rm -it -v $PWD/test-results:/usr/pkg/test-results test-pdf-to-png-converter", - "docker:test": "jest", + "docker:test": "mocha", "license-checker": "npx license-checker --production --onlyAllow 'MIT; MIT OR X11; BSD; ISC; Apache-2.0; Unlicense'", "lint": "eslint .", "lint:fix": "npm run lint -- --fix", - "pretest": "npm run clean", - "test": "jest", + "pretest": "npm run clean && npx tsc --project tsconfig.test.json", + "test": "mocha", "test:docker": "npm run docker:build && npm run docker:run", - "tsc": "tsc --pretty" + "tsc": "tsc --pretty --project tsconfig.prod.json" }, "dependencies": { "canvas": "^2.11.2", - "pdfjs-dist": "^3.8.162" + "pdfjs-dist": "^4.0.269" }, "devDependencies": { - "@types/jest": "^29.5.3", - "@types/node": "^20.4.2", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "@typescript-eslint/parser": "^6.1.0", - "eslint": "^8.45.0", - "jest": "^29.6.1", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "@types/node": "^20.10.0", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", + "chai": "^4.3.10", + "chai-as-promised": "^7.1.1", + "eslint": "^8.54.0", + "mocha": "^10.2.0", "png-visual-compare": "^1.2.0", - "rimraf": "^5.0.1", - "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "^5.1.6" + "typescript": "^5.3.2" } } diff --git a/src/index.ts b/src/index.ts index 1bfe282..3280941 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ export { pdfToPng } from './pdf.to.png'; -export { PdfToPngOptions } from './types/pdf.to.png.options'; -export { PngPageOutput } from './types/png.page.output'; +export type { PdfToPngOptions } from './types/pdf.to.png.options'; +export type { PngPageOutput } from './types/png.page.output'; diff --git a/src/node.canvas.factory.ts b/src/node.canvas.factory.ts index 3ae7491..a006968 100644 --- a/src/node.canvas.factory.ts +++ b/src/node.canvas.factory.ts @@ -7,6 +7,13 @@ export interface CanvasContext { } export class NodeCanvasFactory { + /** + * Creates a new canvas context with the specified width and height. + * @param width The width of the canvas. + * @param height The height of the canvas. + * @returns A new canvas context with the specified width and height. + * @throws An error if the width or height is less than or equal to zero. + */ create(width: number, height: number): CanvasContext { strict(width > 0 && height > 0, 'Invalid canvas size'); const canvas = Canvas.createCanvas(width, height); @@ -17,6 +24,12 @@ export class NodeCanvasFactory { }; } + /** + * Resets the canvas to the specified width and height. + * @param canvasAndContext - The canvas and its context. + * @param width - The new width of the canvas. + * @param height - The new height of the canvas. + */ reset(canvasAndContext: CanvasContext, width: number, height: number): void { strict(canvasAndContext.canvas, 'Canvas is not specified'); strict(width > 0 && height > 0, 'Invalid canvas size'); @@ -24,6 +37,11 @@ export class NodeCanvasFactory { canvasAndContext.canvas.height = height; } + /** + * Destroys the canvas and its context by setting the canvas width and height to 0 and + * setting the canvas and context properties to undefined. + * @param canvasAndContext - The canvas and its context to be destroyed. + */ destroy(canvasAndContext: CanvasContext): void { strict(canvasAndContext.canvas, 'Canvas is not specified'); canvasAndContext.canvas.width = 0; diff --git a/src/pdf.to.png.ts b/src/pdf.to.png.ts index 4e0a8ea..206a7fd 100644 --- a/src/pdf.to.png.ts +++ b/src/pdf.to.png.ts @@ -1,7 +1,6 @@ import { Canvas, CanvasRenderingContext2D } from 'canvas'; import { promises } from 'node:fs'; import { parse, resolve } from 'node:path'; -import { getDocument } from 'pdfjs-dist/legacy/build/pdf'; import * as pdfApiTypes from 'pdfjs-dist/types/src/display/api'; import * as pdfDisplayUtilsTypes from 'pdfjs-dist/types/src/display/display_utils'; import { PdfToPngOptions, PngPageOutput } from '.'; @@ -9,7 +8,15 @@ import { PDF_TO_PNG_OPTIONS_DEFAULTS } from './const'; import { CanvasContext, NodeCanvasFactory } from './node.canvas.factory'; import { propsToPdfDocInitParams } from './props.to.pdf.doc.init.params'; +/** + * Converts a PDF file to PNG images. + * @param pdfFilePathOrBuffer - The path to the PDF file or a buffer containing the PDF file. + * @param props - Optional configuration options for the conversion process. + * @returns An array of objects containing information about each generated PNG image. + */ export async function pdfToPng(pdfFilePathOrBuffer: string | ArrayBufferLike, props?: PdfToPngOptions): Promise { + const pdf = await import('pdfjs-dist/legacy/build/pdf.mjs'); + const isBuffer: boolean = Buffer.isBuffer(pdfFilePathOrBuffer); const pdfFileBuffer: ArrayBuffer = isBuffer @@ -21,7 +28,7 @@ export async function pdfToPng(pdfFilePathOrBuffer: string | ArrayBufferLike, pr const canvasFactory = new NodeCanvasFactory(); pdfDocInitParams.canvasFactory = canvasFactory; - const pdfDocument: pdfApiTypes.PDFDocumentProxy = await getDocument(pdfDocInitParams).promise; + const pdfDocument: pdfApiTypes.PDFDocumentProxy = await pdf.getDocument(pdfDocInitParams).promise; const targetedPageNumbers: number[] = props?.pagesToProcess !== undefined ? props.pagesToProcess diff --git a/src/props.to.pdf.doc.init.params.ts b/src/props.to.pdf.doc.init.params.ts index 58f9d74..34f8297 100644 --- a/src/props.to.pdf.doc.init.params.ts +++ b/src/props.to.pdf.doc.init.params.ts @@ -3,6 +3,11 @@ import { PDF_TO_PNG_OPTIONS_DEFAULTS } from './const'; import { PdfToPngOptions } from './types/pdf.to.png.options'; import { VerbosityLevel } from './types/verbosity.level'; +/** + * Converts the given `PdfToPngOptions` object to a `pdfApiTypes.DocumentInitParameters` object. + * @param props - The `PdfToPngOptions` object to convert. + * @returns The resulting `pdfApiTypes.DocumentInitParameters` object. + */ export function propsToPdfDocInitParams(props?: PdfToPngOptions): pdfApiTypes.DocumentInitParameters { const cMapUrl = '../node_modules/pdfjs-dist/cmaps/'; const cMapPacked = true; diff --git a/tsconfig.json b/tsconfig.json index 9af96e3..843464a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,8 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "ES2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["ES2022"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "target": "ES6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["ES6"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ @@ -25,21 +25,21 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ + "module": "node16", /* Specify what module code is generated. */ // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "moduleResolution": "node16", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": ["node", "jest"], /* Specify type package names to be included without being referenced in a source file. */ + "types": ["node", "mocha", "chai"], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ // "resolveJsonModule": true, /* Enable importing .json files. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ @@ -69,8 +69,8 @@ // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ @@ -100,5 +100,4 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["./src/**/*"] } diff --git a/tsconfig.prod.json b/tsconfig.prod.json new file mode 100644 index 0000000..9fde30f --- /dev/null +++ b/tsconfig.prod.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["./src/**/*"], +} diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000..4fe70d9 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "include": ["./src/**/*", "./__tests__/**/*"], + } + \ No newline at end of file From d67c03098ad53f294a1960cfee28c18a6317cac2 Mon Sep 17 00:00:00 2001 From: Igor Magdich Date: Tue, 28 Nov 2023 19:11:47 +0200 Subject: [PATCH 2/4] add simple sample test --- __tests__/pdf.to.file.ts | 19 +++++++++++++++++++ test-data/sample.pdf | Bin 0 -> 3028 bytes test-data/sample/expected/sample_page_1.png | Bin 0 -> 107295 bytes test-data/sample/expected/sample_page_2.png | Bin 0 -> 75337 bytes 4 files changed, 19 insertions(+) create mode 100644 test-data/sample.pdf create mode 100644 test-data/sample/expected/sample_page_1.png create mode 100644 test-data/sample/expected/sample_page_2.png diff --git a/__tests__/pdf.to.file.ts b/__tests__/pdf.to.file.ts index cdc0516..ec6fa79 100644 --- a/__tests__/pdf.to.file.ts +++ b/__tests__/pdf.to.file.ts @@ -38,3 +38,22 @@ test(`should convert specific PDF pages To PNG files`, async () => { expect(compareResult).to.equal(0); }); }); + +test(`should convert simple sample`, async () => { + const pdfFilePath: string = resolve('./test-data/sample.pdf'); + const pngPages: PngPageOutput[] = await pdfToPng(pdfFilePath, { + outputFolder: 'test-results/sample/actual', + disableFontFace: false, + useSystemFonts: false, + viewportScale: 2.0, + }); + + expect(pngPages.length).to.equal(2); + pngPages.forEach((pngPage: PngPageOutput) => { + const expectedFilePath: string = resolve('./test-data/sample/expected', pngPage.name); + const actualFileContent: Buffer = readFileSync(pngPage.path); + const compareResult: number = comparePNG(actualFileContent, expectedFilePath); + + expect(compareResult).to.equal(0); + }); +}); diff --git a/test-data/sample.pdf b/test-data/sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dbf091df9a607221e000593a8b5a97b5ea5fb073 GIT binary patch literal 3028 zcmd5;+iK%D7``|79sZj_3mw^3d>n>>rft|$r=<Gl zWIx$CH11?D%do5oLHZ^AN9p^&qnnG-8;=ca>*%k)|M=6kY|A5;iigj(_3oW*IpgQ0 zB;?N?G}O?F~e-o&fdSbEveGxxNVs&T}_+wIC);wN|S3_`=^Ym z?y1Je_6W!5=Pa%0o_u4M!sh=IbybO>E+wq5{dR6;Rn+AKku*_{3aqswkCH}v ztJ}FLi^-kT6dU1Mb|uqH42vhacOeZu&Rl#HCGFr-xBWM-|+e^~95C3kuyCa8Nz&=d3 zPw9GoO7mhx4-J@*eqI7o0NLmbm9D2#M#EZ@Dl~~|vk9Y>(382@*~jiaPA^4vloGW^${BO z&|L0&$FyZ34q1)S0TXjiAeyzye;HJqPhX+oj`M@hIuz@m%ZWTgO?gR!qsqvQPqV zVBwTl{djT$Lm)?KJ&`!^p- zB?yU29^x`|s{JSof_pN9Oqel#YyZFw~B0kRS*9GB0?&&kJAg z<34|7m-_(#cV8b5!0fg%+X9aQc`Db0`!4$;o1mTB0`JJMabTnKqnZ}rgzd~^$`C_Q S>NZV0@_bPEqs!}&ZT$n`rwj1_ literal 0 HcmV?d00001 diff --git a/test-data/sample/expected/sample_page_1.png b/test-data/sample/expected/sample_page_1.png new file mode 100644 index 0000000000000000000000000000000000000000..547ab28d46319ed4e4c176f28803da4ba80da957 GIT binary patch literal 107295 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 z z`@PnW2|ErX7@*r+hHMDujv*i?9!Fj%EP4P`AeC?CwE*`8~r(T+92TNf7;Dq&;u*(OvT%xSk!(b=CYr zuzF8#nqR%6r_jDmh=X_uLmgkB_Ifa9ZSrw*+bR_*=!W9~81eNuTkr{;_wcK$)d|Yn z_6XpD3C|yDT3DPj+wrQhVc1z=#aq?XB4PZ>oxXQ}{!DIqvI+qF8>qp~efyr`WZzmO zQdVD2`}7Ihw6mw@grw;r@qSD9+5iZ}V?YKanjFEW!vZ+I zAN(xy6Y9hVtXnveoyh)v!vWr>lauBIjBzQwWi`%T#S-Qa{2<(K8bRMq=nyAiJHj{%qSXH{_TD?L$G`voK1#@L7};r3 zRzzea8AU`g6Pcxw6@?Uv7Sd2kTUL_M5Lpd`sEjDHjL4RZRM-8L^Lzb%=U>z35onn0Vgjn ze+8{@uTZn`ZU^^Eg=fT?~6-GAclhATmwtfcLW;h=ds^0tE&0!5 zgWgWQw*nW<@d+hi<_+EpV^0OT*$XjGccH~zy0hm7?74}X{pb{zHM!FtE%VDojZGj zBaa=s&0@cCT;ZRn`_+316Fw7MIyx_0mOS&efId8Wcr4DZpAKmE!0c>VS{{QvJAv8C z0hi}o-a3i~&RYyul`gzBq(M0)X{(g|)&uk_bjHFp=ilq=>0L$NARv1Y2H|2wG8DKE z9f{=nBl9ucVPH^D{P!^nblcXK^a(X1-7@SOvdNlqDV&IJ^V-eTH5Mt?u(hw`XINV5 z{&icntjHy*d7Ca?D4Q0Ok|&v&89O@m1!3}{OPM+EB4m(PQj)GXGwnNeTuifdbisw8 z)bi`!5c3#r4{@vCy?eKJ?crA~osEjLU7^q7rz!nl&di5r*_JT_UNf8f`h^+MS$~G; zCe?xMklH%Pp5}Un4_~K+;KPfe-|_jS?o2TZV@}{e(wj?rilfJA9*Brg8$8%@#i?PV zNB1zPo_F^IHSD7MN2gQ%(q3UC&*v@npY{Uj5Bj{< zFM6YSCi$S>*(V#HxlMeeZD7y|d|E;FE=^Z9njzhpDWfT{2A~m%6(<&|{ha>4^nysJW$fyIdmcrfK2}Azm8~fqo82? zoH;7uwD7U4^532|DoVRkQ1GCO?~HGTSc#PrjIcs$BZ`wQ-d5kvo--IiC51)$A_BKa zPJFAG@8z$a`C~=Y$8&BQ*}qBemfNNA>(+%*5f~nQ@P5!3|NE~&lYI8<*_n}Hpf&Yi z?=DZR9={#0{GsSUJ?HsqUS3ne`E~S!ShaeRgQf9fYq8-gM}xBC!i8FgF}tX)2(4+w zKSr(KhBj5~#pIepS>(vGBF;Z~Vog-ZDJhw)?{_@Q!N^2qsH4j0+7E-JluvJ|r)>G= zl7;~S#Ulh*9b1{Wl3|zZR!1jHo!XWXAXV%7 z?!9{_BBEd>R`-zo=zc{Vyo#^G#_bCZ-T~6=Zxf3?=qq?v4i}%c%`N#%a&ofm^5r`b zz4^V-e4K?Xn1zK_uq`nod$R8}Djvn2J=?)B(moQf1uiU#@k+~c+qcUyO3{Wit6<*a z@3f#>uc$kK)v7&YC*O{~1hm#%(iiXE`9jE0E-vDV%v)DZd#S3Y zH@&)B@%X{-O=d4Noi?r0_PLU%JBhj>^Coux;0ZfOFc0d0tW=f~Gyf>nw7lhzz zpcA(~lnfm@wDR#;ZI0qL9tYoahDoN0&J9(;{P)@$x}f$nf^=Q;{(hh2%+v69J0Wo1 z|9zEqDCq7aUz6Mvi=3MGF%(_hmbI?zG(g4O4Y+F#Ay*7Lh&BZ%W)6-T zM|&7u_zd(bOaFVF=kuoH3b+xRgW80edGi95w=Hq8)VD8|V`3%#t>+~Qz@}>12ZygS ziRlRtY!kjBR+0$e5S`)_XBO37LNfN~Rt6f^ybx!rjA%4!wZ2$QAzD zcW#OP{uPJ~VVM_*Ml|tW-?vW-dYY@4+_g7_-ky7cVx(@IX~sPcTzcGcz|& z`t-^R=|4^#W7tH)2F2 zY_q(CW_&wG%LG_YyuMjt(A4OWeO|S};Ybo9$cuM#VE1 zaDr+$`taKiK{GfxC5IaH>a|U>Koog%)I*Tb7%33?4$Lmh$A?J+-Sg>r*hxgv-hKJZ zLkUs^eh5e)JljNP4zp|`z5$LbtGb%ev?$A{0@u)v+&l1=GE-F&+SFd=$7aqTzpQ_= zaosv~>DBx9W+0K;YVlMzfhKCbfM_WZA5MRwbSCWL$YT$;~H#-OznCJ+E zmcTLH2U{r&2OO%SZ|BbhnZmf}jpxr}09Z}xJ|LM8913anK79qFE-g`%>|uCgDjx_7V2d|H zdZ`_!l9!3)2+9A%fmTIE)!TS1%GN}_(Y`5K%71P`iF(%omQ0dvJbDz4LZ(l@e!G2q zkgR)ec7jq9kUqM(f9S7m1Hm-;`-#)GIn88Mty2&UtX;FFm-MQlVjSp2BU#X!-)OHf zQXR-~wwl_vZ{O62J0TmHCJdUSA-FE$&Jj-D49?M{{$ZBrkNW89PQKv)o+lAiRxFFY zOpU4_iCq=F7p$w3DFj0Ds)l<6BOJCmHn3x-P80b^0{y*vcdvLnXz|q!OdIQ0(;?G2+7QCB2I40&d^AbC_EQaQfv- zEO&i6=VTHfY-nf)TKmc8MiYxQrS){bakq)q!TdR(Jvdc2#SV4RbLP(7XQCFzfhy)E zPBk$ROn?NX@M=(5ru{uFStA~%WpC!wJ;}t5R=J z;U7cG+#3rMb+}6$p0s6RZ``;sh$;Ps&L$?LMlESQ7jpU^DwD~QFddB7=LrJ16(rC- zI`m_>ML=l=sPrm*UQl3O9clFhxh8aAAf*Fg*@p=>!A41iOd;JI*|rgT$;f}>uz%O$ z4?{lEuJWMf5mUVPwcx7CTIfH&PVPluy$#SJ9@Jb&24Z4*!s#zsy3~un*Go@Nk)g?} zkS)I4xGOn1O_z~ z>TT=^HK-LukL-xXrP|a6$sH;mUkb#KKc>@6DHFB41-*9%h?j)|Ls(xCeD^Pa5Rxyo5v^ZkuEx{}2p z+PK7w&r}|Yo~GBBF+BmDla+v=F0ql$S?{!Y-96PY^Mrmmm@^ubxMG})?c1wJ>&u)Q!>!{{t z95dmJ7O^xY%8l~UmU2LR4?{zWh9*KNLnC?b=5r`GL~zD&7O@~&tJkdAHZOVSu3gQM ziSG*!mxljR4+1~tM@pQorQQLamGsuE#VKoXvvZt$Z~~{2G)J< z+_?h{40d7KejvE~Er^R&a2z_dc&lk2KYUnZZ|^I}svk|pt4~JQQ-npp{S$MQjfzYj zAkjBAGiyn2;m=H|xSjA)+3=ZO({^r)@6dzEi@o>n&or4hQJv;pfO1GAcack5{T4Tm zQX&@VO?-`#B45G#!F-umdOc7FQ9;maqc`wnNWV4TW@l7Xcal+aq&&a={NeAKbnMs> zOz%NNVJ*)M3K-)kNbG_7`X*du?*~7bpa>wpyaZ6lHrs`0Emureo{;MkoG)%am$4kE zRRE!1zPucVk%0n)WU-;v0%+=e(a~*zPdQgtA3yF)&J)@Y@qy_Gc*Jd?2~`F!Z%r`; z>f2oWuF>>{w9}`@(q{<)je>&2fkv92lb_#$0Fn(W1h(IVlg}i>42MHYS=v)MveW0m zu>Hn8Eqb>X2ATss9#MOVe!vmM7P0XIXTX|G0>U4bv4jdRp zyrXPqFnv4O%<;*&>2nUGWz}1J>ukShktZGhl^ZwY!305_I|ZWi1H-Lg&QW1P0moIe zB^;b=u^}kLo?)8EsYl2TD6$cm`I1mnx^xjVjQ}dC?g%r5_-qgA6fWK!98eG4 z!JxNRtWVM61B+wI4GVRvX9QO83j#0(KjWiAAO@Nxo9E0kr2mIZD zKYd4`I3v20WGbDZwS*Y-1qmq!^mG07r5C(Epyi)=>V}QH>hoT`bY72Wd97N1=?#Uy z96?tidE$v-`Bazxw8%Bn%7@>0)b-vJ9qWCXpZ}MVyIvO^p3QuO3KWz=N{SxLe{_=V ze|`;GX`v9Bmiow(6(ckX>@82(J&~Tqw`Y=Za1j`-C-d79?XSyw* zhO=X8BD5r@@j5&z^Anm;QRS~p>jJy#6k0OG{m*(7Tc9K}&D>yp&bd@|L}%2nPnrwb zM9wHOcTk>rO^5g)o)MOmjZaFJ1B=uhTI*elZ!We8ZqoW#(i$rC0teW2Y72;p2NkP%vzkgpRMVHe8zy)QU6!MK{w>8m*@)+5z zEd6Fm$lAxc%p(d3BK1OONe6z9Vq>-$!$VKAshD1T`qVboPQP=KHI6Xi#}FxpmL#?? zqTZZs=7ybstm0K#O&<7140)r%wK1JMc^uaW$}}nKBrm4UwJ@3a+NJTpoo>)-8+h8o z#M-(WrP0n0A3k_o=(8P!;sv)&;De%nk{*#!GHVqTxe#lxk_Y(=iAZ6Xf*#9x?nX0Z!AN6bX$IG{>{9&y@x8`M6U>Ma3HGozyI&UjjV&`1{ zhW7O0_L<@%;W9F7lhxA-BsUNlZBakZwfE5f_eeVHAyRAIjhfTkyoCgmih!oQva-5k zyH>3dz}l3hUehcr6a+!+Mx8BWYJ|z&I<-_mOP4GeNBee&oWpM&vgj=@dOJ(*Ef65I z7n&oIxg|1peoYkjTm`$=$%uatHpGbGA>oIxdL-azH7kMaUc=*l&MzvOe&g+%HxuAt zsG5&*C6}dFfubCmamInU(vlS}TAI0LA@ zk};zHPh}6u^h>}2!Dfl^WUza**_6!FdHB6Q3K|^!46TXra3LF_j|p?@#^L4-Z(O7kw`&5>(7uh8>l)q50A)1J<+FEg~ z&GdT6HZh)@4?$!1nRb!6E*CU<%s(zKW0aOE(yty}t5Ayhny4Loj%;fm$6weg8h51_ z>Vsoc(m@KFAVjc7J#b#~BgdHh#=L0?kUKuw(`ZrEq*TP1wiibKJlCH=Vb#f#C(9a< z`o%@(DrMJjbyqS`W^oefAeCX!?5zzsdCO~WenWt!D2aJ)U!NO!dEOdIzLk%U0M{Ck3OIA)Xq`Ilnb<$<9y4Y} z(7o}0(aRmCRcZN~{<9K!WIXjXiBc!SiN`8|F6bU0+4#H1sWghf3+!Q9=-PA-5u##H zSL*1ftE=yL=F#8|&}NLU&$x(TYt&x9dL=LB7QI(IAc%Tb&7Cu6lF6T^6^UP~tJ{Cl zM90Amj9>AcUL^m{ovFP`ii?A|DSc8?PMr#5Tvw8E^9$LhkI&Q* z#&($>|K-Sr1~Hnl4?7LSBEw`S0xoJviEuqi644=pvbYQ{jInzTj~M#?rz zp(~DYAvxZa+-}4nVPO;hsX8k`@Wj7ihV%*vjAVz;Mm03q#SIsR$S6>EZu(l@RB@le zOi?qYeq*F$I+ux)6DV#rMOHkBU+|1$LQ)7)YW$2qGuG8M($GamC_kYYN1RDd*OFd0 zyFrZTlQk(KBBB^&LnR(-8iYJq;lZVrIKvcl@({x@fkH+-RUeJ&G0G1f3*nI}1aIQx zXI{9VED3Mfz>Pd%#;Z+qLRr>gP;g-IE+3yBW42BaT`_`}VZ*}3B@k^WDE|yP@*X{G z-mjt7n=xsUJo6agQXxf(xV2o1n3!pFJ8IH>JjaB%Pb|n7c8$2+>NP*KOF}gMqc?z* zj}I09WRy=tjB(_DTz&cimilnLwe3QY<1Ww2;uIPImoWLYty| zG7Q2TZ-pJua;9)Ka-LL7eO~oLZ%WyvD1jBkBhbWhY$#825X6v;%o#``1p(7A;W2?a zF@b*%G>%i{iUBDe7U&Ypl^qvJATgYo_P*U8#S}j+Mx3ln1f;wmm(jS4EeASbYlM4 zF#=>%!Hdn9>8nTA)zzhK52Gs6l!O(Dnp)|ZWv$w%4D^%=@l77bg;|!KJd)B^O$hu< zO;Wahf%>6)sN$?O~2}*N4lVkWO9Ojnxx>1XUt_WwWo1^YF zmZcvWdQy8Bq?5T{<{4LzT!kb{060iYr`IFI@sfNd3=-}ru0>3{C`|Z(7u>AW&tQr2 zo)3>6^fO%h%4gPZL^N8G08NtrlJev{nZD?2wvb1pa@hcF?OoI~lK}d+wdB{b(3ds+t~Q1u zR>YD_B#$$79<(g9mvwhGvwTjkdf~fH(`byTH#emo14#VLxfqwXXX3U#c>__vRUvnP_1 zy*JpilWl;U7+=&rWWSww&;#3+zK3R4_b7SIEzADh`_8Rf{^(?*Ms1!IvXyc6UW?*s zL#Kf)iI4*DDFlx|c=u^li;kWF=>kN8c)#gr=@vc4V=Bn5&|Ms2J_YPK-tH1LR11g#Ut914*pZS7};GO#S?-twpV$f*(@5mtz6C|%% zx=^P^94pRh13LN^lCae_sn$V9+P34E8oy^8QrwrSek*tAFn-3d5YBP0_YEc~(L?fL zmWcg13PQ%hoft1YJ@1+Wc+{}1Z7K|om0Lqb0%cTd5SP?k|Mhl z5LEf~23Ol`VY*{ynZiHq=P0Xo#fE0q+=#F>1=@}g(zvfzBCmn#>9$uD z`_IO|i!izZnKk|$_DpJ$KD7Dt&Hj6b-A9OUi2E2w2fclAL~H@~x&O^t!=J9E=Vg~h z7>QjvE}txs7E>@PCE8DL+O%m?5XBl*LGs;Zy1GV(hu_s4Q+6*PfO6$v?*+=L?C=Wc zJ!-&!y%atQOSk^1KBiFFzw=Vi2yL>{#U@LM+Etw&#*c3$8~dZPNXRWDfx6y*R-UkU z2sppiANB28Mzc^WCQrMkyJ>G#Jnzy%uB!AWTGe^(7k(WrU~ER#2o>r5l>`1WFCE@3 zz-k*6mUM-PK9Ini{BdojwZq!qIL9eL23%ndP&Mq9=(+0x+6fpUSDV2IiYmS%1NB_;CBzp_4SSb@uUkf*1vaX~n%x<z0VUfRaTFA+{$kR5PR;BqIY-Lz03l$|i)91E(g z2iVywPt0J9>5V-Kvdsow*Nk&irvrjpq`LBFy*kzNg3hu*J0(6 zOLgPa_DPB=h=@HO#C?<4YFK&NQ0- z{8mAMw{e^#VRayP`R}(@>zCT07_z44wi?z?PqoZI6mrlwbcC0+JcynH$R zrBw~+6(Cu2F8*0-iP`DGO;=OkpHaZ!iP`Gh`SUHW?z@S8TuZtF0Ja*7rR0y`&%bcP zD+0=#etvYFK%g5xUs&RT&&478FK2b~C~)bQ>|yt3wykYk?~6+#7ryOLvg_~@>};dz zasZ>zjZpF^{n%D6qi0}{(Xu2->;bL-6qP)&hpfCUObxeSmo~5NY*sx2nP#z-zt*2V zb*k_})UqF%?$JFvxNivg&^2ZA-l}o;#`L#77yILOamf5LbtDRA<;DRF(^xEWc3${$ z)4$8y;DNz`RW>lObP6qUHHjd_ojzk1Niu;hL%;>xab(>>lRW|0!=gyuveVYfG8hJ_M6@DD;t@gq*e!uO?sb81x9k(OmfkQ;W^0}kt z&K)}EVM5UNgAq-7`}hTI-`2#hrM!=k{0&zXc#gj{cRt$cAAPo~cHIJ-uoD;W%&Yov z_F?IY=PN#^H5{+E1@a{MB0~&yOpY4SV|hTv{!=l0#sI3jwD&_WqtoKqXbEe=c7--r zp%{|8ADsNSxUq_B`1y5IvlHXwGgP8Ry3JTIpTMTyr48kMpTmiXiMAYMCP1_KEkEw* zVp2zW3;WH&UjzJtnOGkVc04A-K^_q2S7@;IL_~CPM9W$5x}C~ET!U$nDjiwlTNty- z!$Azca>#(H16-|c*72lE63P_2^lsReF>d=8sd~B7qMw`5!{}jA4Ca=4%$*3ri^IUl zfCjBkM{nPy%kE}kaNwTM*@Id%yF2oG>#g;_S5&@xXUn*mc{7=w`wO3QG869^Fnza| zJ%VjP4~DsZQAGz@_U0RsFG=ms{Mua;5@aL}sL6^lYIWpuvb!hTEAKGPse47TWgcg!SLs?#;SDdQ^dZQQ4;LIuPR?W0P7dm~lZ|U!QTR$etc6<377O1>#n2mjObTkd(G8h zNXcjZFs{f>qqYGU?-xUgLOTMUB%pCI5CuwBYHiTiP}hFOK&0kKiwq@3Ed1JHZfFe`c)(8(xn~%P{woTc4lH)Ow*p2pV5{PT{@R|*9Wp+t|yQD zS<+Nr&ViB0xCbjEovPqo?*J*q4Ildc#$XlC4`U+F|aoDEk#KkE;nRi4YEPt5!RZ0z&S#7jI~f@VB&WJN+o zt7j>v?|wi^(p>ucxuHHqLq(x`cMOnRn~*xoH%+9~aYc7)>)_z;(NOzbj2^Hw&yPHF zo8>V_PR7TprgnC{k0&K@SobWy#O9JK z#iOQ7I=6kOo9?{L)LN|(atO^2?n`DArejk#Dqo^CP0t*R!qafrJ3 zCA*c=rO@BDKnBgFFW9vEW>mBd+vx|60FhE+H2K5A=Ysc|RK+ zA+FW8`nzCS^Ff@VgQ zK%54prKSDa=;k(@y_VrpAnFh?Su7B&{$c#eD7-_)-PRqM_YIV`q)*17LtZrIOuiNr z>}FZRG#Y4{FrLc~^&RD75*YR|XM}4?r)YdgmyDxWI#gtbC<62o36h4ITJg#>p{8%`N2<|+|WPC~2oZ%)q5FaAsWTO{9isflSzvWC-RE*_&W zxT+FmI%zqoZ^yfJrX8FK%G@99F<8$q1N- z6gtz|8pkZkLpe`;qaQhr@IG>cY2dpBZrn>l-lje`|r8wK0B? zHR24Y-qs$Ow-yJ*-RX%#_(t@BTEaMFBHy`u%_5pM06HP%p?pDe=!1}oQ&$XakXHi4 zG=IfbEj2c;?s;W@(8Ob8_j?eIThyFT3dqDlxTHUt^^Ym?h$)XkAbcch$*L2e= zn2@jyR{{3WZ71f4*vGa?Ea(SukpiQm_k8=dwl(t>IMQ_{RyB=%x&Ij9T?pIJ)(3eX zt^50Tk*%!^=;E*uBXXWR>4w@uF#SXXF_=UumbIHR(hyP?p2@tw@d67A$=%(3O3di) zaG~axdU_j+Ulz(cEM{vlL(ZDu!!JRp9GaOHc;26g5li8WbJE|Y8$@B$!Hi*I9;^FV<$ z+@5?$VgnNTAu63a+hPdu2w~PM(+!ZiG=<|pUog4QeBDJwMYu&kE1pB(!*9IAMTOKU z1Bu}Dz;eQnE^WY3gmnRXR=>XUrPkaP7S;)fkt->`WT3N4OExN%#3+x@;J%! zETD-QnrU&t0$NX-QbB9(lF5MQJXrEATLzuzdDx;i<@H|XkH6-JaT3Gz?Ui(NbwyQ- zL&>=d7b+k#ae=P05_Z~QC&~`p0C%*Zp zQKP`tgiK@Duyc=(oW>|;5hfO{?~fgcSWx+_pr8%WnEC7xd~c1~&sR$b+nm`1%6>_8 z&vdnH_!JAKc0n}%l2`=)4^iC3{ZHkNWzFQ|Vnv;}o)0Pxi_ka!<~X{;bf`X?H3ICW znu$O_KG9jG&g(~$`;~gqZ(aYwf!Y8yz4%N;M^2?L4=}i1RHTTwL%3Y(A!asC!s>Aw5rgLf znZ|(8=Jyep@(L=0mQM2jxa?o0oRRNS-{9Wue{u2wF2-5S8at$a0)VRf|K-nS_}@No zQ~#OE{YNWs!t%eI-u~~e{zpP_`v2TzI`Q7dsK@B3!c7o zIbAay6H98$nKNgucU^$FlZWY;r5}&*!_2}SO-iaN-1NSxs^QGm8>JJitU8EaoH3*L zrHg%9>E%N`&(v7*ScqS@vT|`<0P|Bj`A;wLjqB&pS$|vwT1gxfeJT*VVd_azzR)z# zZgrn`cT5Y#INpc^+1(~g!PD`s@*b2r;_rz%A7?GM1g3dWS^4PYkH5k4W4$h`+4Vgb zs5JdT2zK_Er_Bdoj2H% zk}?2!;)tw98@jqQo`=$>BAGVetNGj6G2i3J&6{St1EXwQ2v8W|4g~~VnwW)V!&mzt z33|f3dGjuW+^QF4src;7_T*H7B?v_dSN=js2Hrkj8<>RpI72H~(1^HIjL3>64D;hO zAr}_hytgv#(RmkLDKhZ~K zb450H=^<{(d+?M=Q>RX#nqYE73}|e)aNeu#xwdr&QI9An;we&Xkl|BjDKDddKFrnC zRTX6hfy!g!*+*k?!6q$c&h%n9MdpR16D(Lcpn0Ov^jWiZ(!>4!yh^F@0JNJ?|Fq4b zh6P@_MmFw0tnAX}3DsTy{%uL*L0ix;fFzDX8YeVc6qFF_IpCXAQXCk=Wy*^1jADX= zq=R1J)Ps*o4~L*++C|!;OC&qBLXYUWd2Ix+z_4kd|K|!+foSMEmPLXz z!M2h*ececAifCWxT#$6Cs;WvP&+;1n6~~gR_wTo-J`DQi?F5^5^u&o=0P42Vxy?WO zBT@jHL{w9>ctlsr1q*fy!75o(Xg-AV0)jO~=d7>ImJT|g;S6BQ+u(;JiSkqUnk~a%2~S z(qu-fBM1Nd*~IK`FQj?=7R=fXCYYy2gTbz8IKt!xc7~voyR7T4J9oq$yQ?@|An2`o zj67#GyAHR93K$^C6O(}M%)6oa-1p%*b+qs?O;7I#OicxRb{2ip{8^V}!?F1uoW_w|Bbpi17F~Wnugkj6sBR9TLT{Y(57Z5bZjb zoQZpJ8S=xG+jr`ujxi7*G^b5;wE%+}jkb=ctU9t#8}J@x*+Nz4X2f>0t^m= zl86a!uDy>uU!63)uew59&Fj}`9=a0cjEsyV>Xy8ZpaoRjp3%|Kcam>q4-GYI8fvE5 z%;46|n}M7r01B0^T{AXa9%IM#M_$VQ;{mJTBw7F1jX~8)Ajsg_yQFW#sClUPh;5X$ zPwcwBfBzouKJ5NRo;!CAWIcoD;>{HBU=XDjJO$!l3r9Ch%{5m`_Oj(JnQUs> zf)mWuYmTNu?=GiK2*=9H7lUux(whbipIo_+GtU(W3>n~fHa&d;7_V#EY>qN8N~!+B zF_mc6eEj^fdDkz{WkQ;UC*&2}_||`WcDcdK%uGn4+jr>DSe`a(T{yg>Oq=VM>4p^) z=?n@hpFCHwy`xV}2T{*!uCDno7XX!lP6g)+$rDhB(TP^{5);{e@XEFS(UT`92%VLs zWgL|}=%)a8gC?p}WLt~X^h=j5vt={j;^_U?h7qnFzEfQC@zC+(e%Rs&ha#?XCHfUC zn*gcazj}(hj!Y~o0sOen6Qx`av@T)+uxUNLg>aJBh#^6^W9bcV=KTDbW7)GU-_2#k zRJj^q%5=Dp2Z)Z6$3VlK=3wT+g#-3apFMjbz={?_2>C~5CE3F(2K^!DF~d;^_bLW> zB-|gjj59I$@#9DJ!}-qpXqOHh+*(r(BN}>fh5FVcT2+rjEKBV8c z!$;9a<*wy9ct@^bAbSve;NtUfalJ&}I^!A-;-rM4$`5Br_7=;R9}Z7Bdeo;;_3;k( z@lLlMtV~1t5fx>QOg2ccN~0J6TpWEEn}B!s2V_l1dQc1$6xfd8ne#k2AtR4T;i`$X{1`X$>>HF$aO46g?rHLYhx!V&?t#&0$cnTzu# zg@lJcaxC*2EvzZmu3z8&7J~0;uKhi9cbe;h(P}WnF@FX{iKh6#D`JR~rZs~V_o3)v z(z;N9E{&1~WbeL5e=Nz;6PxR%)){A-mTa0&FkkbLlb-0QrT zcKHZcylFjA-fYixo`ShC0ir5{$pLnop69tRPadKpNeB^pqhCja5X{dDrYU@?mTDk*2Me>pO6YR5iaLYz^u*ZftmZd}AxC)^<`8>Mr=}6BFBZq> z5xr2NSrFL8mPeq`{QP{=4+$MQbhwW%aPhr+2|}L3Ki`2vrs9H+!c2(g_yLpZiJrI7 zAyTaZY;Hxa50?m zg0ZX?izEK{uAAu41YBhKtE#HWWSMxX+Ts^i$6I=){f`!4N8WnKC!zSF74ogKmX}jj zv?WIfdw0yGtx(5{I?rm3aHehm$18AVA5So79;W!6$=DAraJm8LYJzZe!m=&~}T z&O{QJBp0<|=4yAG6y!X`vIizpCrwh7u$4*-p8fCX!i-IP3PwBL0r`ii+;1;`wF`K9 zO4hfQWV`?b>S#;Hf9RRqCQz6h0&P#D{W&5eK!9v$H^r2zP$BYW_&jZm2i**sq7_^{ zz1O5cShRqaC~+MuO-$tQWeWo27b2nCRUbb#eme$R=}4+sOHmBbujyoOA7G%RsX4y& zYBA6#UXv%s#6(0O|LX@qr7YL39mK}6jd*9ggIXEAsz3CaxrtNP3Of8bD7D7(ndWf+}HEa#SZ8cEws6`7g+?7$K_SZ9)AIc@4`pv&u)DQ48 zG|rP@y;^gfcom{NwjHMQww)XbAnGtI|Z za*uFppJXCN(9|=npV_T8I=A>pn#`chn>T-zJ9zY^#zOhrCmxAr%wEZe=~7>NW6u}$ zM$Hwc!=*khD+}hach&SEEUaA{FMQ!{mp#;b7D5gRrWDmMA7=X;rvr_PSy=}GlR5D- z*N!g)vBbEJ{XX=YLvWPUAfD*O8sAr#+0=+4*y*%+KeX4(4QpnuW${+DoF{`a8gAaw z0hYKe-2*eN&TkOJmER8QC11a2wW@(Z7=&ACd)3Vdmo?uBzEvic6h9-V9+Pb*q|wzX zDheUG6o|0zj@3v}dB?t7xqKVPL?)KQJT~ZZGKEU^X=d5n7PAiNrx396p^qIpWD?}T zu%n!(*wTC$y?9_^q9z&*wi31Xn6v52u0T-^DS3I!p^s$B0sh<99{IlpZ&1;^#r2EA zB|m5@{XqU^*m6xi{GfpY3p+b!Kln;qqU_9XCqFNFR+i4kt4XhEFsJH-n*FU6TZ;~K zZAv}EXg$Tc+8=cz3~F6Y-dcrV*5n(xSh=z6Pzgz1Y*Xdla`*RuX%9qSktk?$V)yrs-!!lp&dQMAg`p z-xIqQqteYGlBnP?U|OH_{9fH_*()pzD_mMDtP2h!WtL^f`bd(tH>y1$?}7Fyw0GY8 z7==3#P-|Lr-@`bcb^tiR-)I8H19u$2`duCl-Lm@Aql=pjz)DZAera4uR{nP9z~Ce1 zPTgpbsDE-VdtWL-6PaJ?(5_}Th#pm_8Z?(!UJzpM=oo-59Yji&(W4+IN-j_0)US>6 zue&-tclw9YQYNjwTT6Cb*yyE+( z$GaZ&d~tQjEzmwmLb-SEz~-KtKj;ZNuiM?FFKCJTxMlW8spFjdAJFO@c8lL1JNStUF2*^ zs~KT{kbZyAsD<`{pUP90dIy&SFd4;JOzL>9Q>rHN%@wxxy?Q^qUtXS_{{|piGO{jg z7)y~nk!(+4t3G$p>^X<#uEwH4xBW9tYncjjxwN`Tn^wxRt*k&8 zXF5Ko6+A`nEE*oklQKsCk6UW{uk~MN-|bEa+5JZO&y>k^jUpc!w*=sKv}Z+Y zou8g>YE(K#h#P^ty>{*_$NYNExz)Y!HGllxu#7^OAD_IZUv|BS;KH#ns`}#+CSZEP8XeCmq=joD2X+#J z&SL4@D;E$R!>glvc{uFp$0&qhyAr!QJKUStg^z(si`-J#MsaM?gK}^>F)01YwuS7= zN6Z+hn|hr3Jo@&3qBm0n8+skg#k32s)pW&XdP2aVlk2<-cFbNfq}i5tn8)O2PRK5Stt}mJTF5e#PU-&z+ zs%yUmR`45{-x#J_z~JORlRwNj+8tWbCv!dEmg@gt{f1O~YD0 zpVgnAjgs1YFRgP=97O_~|99VOrWft>?}99!Vn1B|XortK+s1y)Y+@I)WU|8^U88&M z32E2&@9O@qpcP}WNAj*;SJ%{R3g!9>Pqp>wJx6S4jlT27}10MoppkCcY66E^;rby{VV+>RR2iHzu+QPbiz6!D8l=S%hv9NP9A9e_b+ zTN;IlfN1RD4juY@|D!I((o)h?I4gng)DWW=Qw%?%&d0s)>EScpKcfyDcwAX?`HTl9 z0rBV0&(r?0mT_0f<8SHn_K7ptZL{0YuO;pcX+^;=c4>Y%lJRU)E6N4O2M!`7@`$PT z?k!Jn2_L+oEi$a%1-NP&nnqOJPcXGP*d+NWw2pvP-1Nhu|_Ut9exwC;{8c3db z;#sX#GiI&3z8{R9i;$C(lThHaN-Tg-QBl!%+v4!?^lRIH@bBEOU6y{BrhMtp(6k||;sBhwvrVkc~s*xY>9#u7y&FItG9hF$8b3?;ES5!2?z^>bf4O8CM1ipH;^y|&EJwvgxTN4%5yoG)8 z@NGSDbwgUf(yEhZKT=nEP0^yaF^()NvA$e(dP#GjrO^$4*XcRYM6v~`D+m#yUvH9k zIWrA&SQ#BzwQ7%obYRdjvxM0$0PBmHm=_clb5W(%m%d!`{&C>b&)Egtg*@;Z-#r?%rrboxTmkZW>*_jKK1QB{m}30&>HF?<@tK#LUNry32xIOh z*Of9yO+({Q-r7>bYx9#b*PcCdCN?EyuXePn@stZ#b)bf531#=8G_BQui`7biZC_zn z(lbB35f1}?$dp}<`oo(2&0OMt`SKXbL-4u8!Oxhp)wKzIuum{(tvhdr6BEi^!?O9C z9qs>9lMg1Uj~OrT34v2_`g#us{k=$WE*m*NK9gAB(%1T&0x?|(I@dr@Al~UHHod?} zx&FGAaTU=0#oM>LXd1WBdM{S!!@!jF2jS7|bo!vM`$OnW9LV8d<*nr`c~a!#k@Bu@ zkH4xYN+4{}ye4)znTlh@)8xlgP4kmA{^AJkN&`@t6%kB(F3dc7E zC8h0zqYA*64&Pg3ytlrzr88Jf`FS&O5b2S?4p7B%w}oJeh;QH)nGfA2h$pBXV9Sm* zu^|*+*w6dGbbme6U7|rlp!2L(yKZ*3*>E5@M&Y>I(Yxcx;wnb;aX-4hcsRZHPUE;M z7(?eOAHaT92>5?-Q5Es?pp7(`zw^rhG4z&|#vZo0qVNDe+=<}QH)aWd5_5+VMV_Ag zf9&~kAjQzax8V+vd<7q6dckwds_tTd(a#ZVF>m+rB1;9+9mR}_2xW6$u##2w_qG-_iV^wV4d4Dx8G01D5oe!2b8 zem056o;=wY#mIo3J2UGb4{~VwMFsrT>E^$?NAj zro5RK^~;D$S#Y5v1L(hK=pvj}Y}hcAr?)M04_Z5RfvX8l^5(5ud3m48$~_u>dSJcy zg~jW=aIG=QvGNDX`EzS~Q%dCR!NJN~S&?h1FpR$=-+LqXVJ3@9@6@@%TygYSnsOku zxWk8=2`M|OWkm$YD5H(Dynlj{VxX!<+mcsNth=48NIp!X07%L>&cu_MIRobl(IdnFA9DM0?`p!$8 zw8foSMe(Ul&i*y@ZDN>>Y~dFRnU^~E3C+SKdD!|&1%lGcw{J@tKexb_j?`=%X&7Ah z^AV+?Oe|w4%fI8jv0Z}u@A{ym zKnkR{QKee&Q0$ilIrH`1cc=lZ3lS;KyQZ5sXEL#2Hk(YRh&eYz53)w&Ghy!r1wn9t znb{mvf=E$O(&^p1(Eb*+Y3^ETV?2~1q(GQ0Cm#RDKYPiyZL1~ms=wcKRa@z5UCW-F z-0N9o;3%xckg6d*{Zrtb3}jS+U=h$R-UL4n=#O2T3_GQj6^jtEh}r)Wx(ucH_=x>K zk}wM^NFR*oSQ3k-BMW{~aw#{WtiC>W5Os2%h)7(%MTCblwG;MhBXy=&sx0TpV=MOB zNJ6x1&-6GxeZ`JXO-!hq6ND+@p>|z|21pjmmL+PqH|~Q0hsjM9nq7WVn2h=Rw_@BG zDevjiaZCpL{D$a~m&A+jPJazf*QxeAhSH6$2Q*-Zkr{S;ev9WUucV2>m&bLtd&Vd!wE zjvJ33AK;Ki-kxn^GZpGU%zX|X9894@s6c3B;4HPwwywi8YrvUyTTS)bj5w*8L*xayfW3(EEOYiNxruac09~KwzvdUunh4S~7KNhmJ9;tgtNiczz zkBo%gxn@)wtkR@HS}j%p!RMg@fr8Ckw@VV6uX9t;kO>35JGIdidtze>uu5d|g)?V@ zB#TLteC`YdvBa@8a_XN(9yK&9%->#20P*^Q;^9%{iIww2z)Ad?d>h$Q=5q1X8p-{~ z`97t;rnp}F6dV}niNl7Se#G*Ut4C8(u2budH4$#zJVA==IAhS_3X9f)ehP?dO+_=| zR_FHqH7LE?QGXWhJ>!*#qv%A#PUNi9Ek2UKjjdU*}@Qt(5gMRK@;%~ z#yTie!=9wioIV{jygcd~5sig%T2%bW=72szD$Eks!pg-jsDKv_H_8b-WGBZ1jK!Lgi_T6f2X}LqdI;e4wjO|X> z#;vFCb!PRzb+Qkc2G2_yII3{nBdU_7Mo!bWGL;|sbe zbMkZexMWeWU@_nLKB$W5b%-f?D83mI+3vHN$#R^1I)I<$AXB07UIXPX>QriB^K{hj z%76+Ct*-i7lMQMsbWqrJ?H~fua|8M|XS~!TXuyaOUGW^;ws-H|rS7rJ@j!rgWTun$DDHD_(&bJ~&9tbr1z z_u92)!pDuHoqH)JB*cr_08hX7)@f=1wotKa9I;?tgginN0Ze3zDMw*UM?Jvj4gPSq zIZJocIMR?}<(n*a!%pVWj>TE@9!T}Rra>&td-lvG=qJ|SVu`|?ECJ>TPzCJ>wh!5t z>wgSDD)$m$2s-nbXZ^!kt-DIcuQ@y4=KT5=oK8Bb@K>h$4V<5uFbZ<#uWo?(%RZMG zP9c}>yb}?~F&>XDK|CvVo9A_@=qJ|JiU$E4VG8!Gj+@QR+aN~qgI^Ok3YfBZ%3k%^ zD->s>M)X|k_q57Zx#Zy(jjcYA{&u9A4S(-8NOp71reUoafn%@B#x-qpHo^|y4>0M z1mkv`7uzLE)Sn&K5$;|8@at;MLfolS7H`AXp-K`?@yrKphl>Lp)nf}uzMhcCGWBiv zeEz4B;(y4}i2vHdJ#}}<|GuR=>c7@<&p851*Eq}3_&*Pi{nz4cm;YYy{r~Z+eHuPB z8(6dP0v>1RqwuY30t(eOSr^5iFu+Voa@h4Sr^i%S2BK-#r^^}iXw}NUZBi{?Txc<& zDS>}>J;*6N3HC*ZmXU;{Z(J3_BSPCQHZaag8j;%n;b`2-(33W!RcHOqM!N;DSVpMO zh^ZxUKTg#IBcc=9!q0`77m1``0H@N^cLoPr^5THKbp{o>Hy*_RK#anX9rh?Ar|Kqa zX{kX|=Q&*nEdf_#in$!op;OqP$ia)QNLk-*>UOueJ0>5Rmle&Pc;U275#NmZ*Bw}4 z?%8H2^LN)wA6_QgT%7lzIXSueyxA0$44i`a zJc&cUte}YYgiT0kZBvrCp+r^0nh2ALz%Spw_d~9@LHBGQYOGwEM8m9Tk02rkAN~c` zuDeYM-&=etmXdAgGoXL}sRu_~s;ep6(C2I)C|BYm|zE+NZH%=%ADB%Pws+)z8?cD-mPjT4Gu`A<$&v7Nq{ zv8-P|Tv=<%72yL`znOC9E0uEvEowO4*i5<>woMLY)N3a>2^CY>MaP=A$XTcVWd&;P z^G87qQ=yRx?exP(Y+SXgM2M*D^t%udG8fzw?h7g*B6$LxmL*!(>;h6ptoY(>jK`-h z=V>+N`Pi5_Z0O@mP%dw9`?N?%%YUQ3HteTn4A=x0K;gOrrWSE=!_$Jr4U%~Dz^-#W zP;*@&Q=P)FMnMtc`spVZq#W%9OgACH{^yy;IedWDs3OI-ABJ>AnBucG%ACCvBsZo* zq}2*ub#WY49Naw_sN=#ZDJx?wka+pRTt145L$j2z*Xl#KZ({SZQBLxD9#w`b5JJo_v$VE!$9w@DoDQ$TXv5H_W~tk4sF< z^KluY04va%(vOZ7hy=k~9Zx>+$ou(SY2)}pu}rCm(Gu7r3o9#cLjMv39f7x8mK1Oh zg+~K86TMZVSU4@|AIF5kv@3?nio_?RETliRzI|IGClQmM1axfdti<3X;v1*+AMyJh z`JpVM9fge;O+jCI=i_i{1|cJ-HxZ_&*pJ207n8UZzJogpqiY=6j7VPiOtzdqzij#Q ziNsz;^z!B(5C(j-ACqK_;I^nngkvj5N3nf-;o0k3Mnf*#V*%1IPR!qmS;}>m2iPuK z)|3?WRc8;v>0XpLgB0E`RE~x`$|QDQgPebf#%1GS(OU?$R|TISnUjN$`uF;0ogU!KJe=HuRM) zaDZ5K!48+t3 z)FRmBcB^Y>K(`1Rp+}cJ#t?do=v1)OZDyAE$#x75$h(0f)z)Wb>f63{O#p zi#lgD2<~6-4;6ho1yr5`-ehu^z#{g5DKoJpW-%ZLoon3rG%w+Aq%NyG0w^JO?P?Bt zo;Q;B#Ur3`;uqr7R?tL0B>X|d>$0WgN?FM$9?U@%aO76Vp2pEUt?kz$;fC zx2&gc7HUR{0A>O*-nni>=`4AI?P0DjmRKA04-?mkYCuxG(+6l#Y~!X|o;n;BgzI+M zb(u9%zAs``;ph@Xm&B7CSZc-rhOH@=qgUI7B-igZt*V%J7x)>CV!Cd=u)6CC z0tMA|Aqw+ZpT9R3{5v(1aATm5U5zdcd8z5!j+1N~kYyy0m3}cwCp6PE)x=C@5sZ#F zs$~n~=&$ADRah%0qCo!Ac265eIqN)fAH}d~!A#ONBbws}9hh?FDFPo( zckUpu{#Dk9>w5^KPH&W&+IFdsd~_7n@<2@fvoIc& zMF3FD2wYcPZkBZZe8Idi%!91r;CH?T2^h0G*q%Zm{p;PfZI0{eT;+_Y^B^wc8d<;R zYE8@d(kD;8k7(TTs`>ed$7x%v=FESrx~o^{<6Rxw4$(XwpWHXRe8LnP3%%`{9aZ~H zOWS=&t(oaA71c8v`)FDER4%^%^Y`_^J#Tg{ajJb${-VzCfp@T>=c550n z4>aAXR$dY_yIfuAp*VAOuDZ~KSS}jUy01lU%NOo}plot&iZ2VvcXjgCXh@30w_0W= zUw3i>qLeL0R@$@(W@2k;UqAaBtL4~Wmy+5;whddHfv6!PMwEnoGGM183@*h9$rOJ+O!CnavSN} zyP`2DL+v{tn(-zp4Eu$}Jc1F|rGS=mscrlB@9){)f$uJ2zU?1yIz7;(d(UC&l`}Wl z&2qqi)nu-q|t-P^6~`~SJ3+KlC-d?A?0n{`9q%0 zC28wb6xLG+xlnr`8iqjAXZ8K=nViP+o-qT(#%i~ChTTVzzNYVowis>Y4bN44mvGCd{6&$OV=B=!-Jv&iD1w%F4<-6bjfdMO}ANuXB=7RGMz) z0UP3)_!_DN7yOCBu{pBkcCCb`hKtD;Ty=$mA)>MSpDftn9_SMo>%)^xt^vwdMs+m|Q3TYJd zc}_YyhK7fDND5lbWB3;)P$v@)?dsm~jzE~_y1JUBLN-`NK2-bp^HH8r%Sd~x zFeGf>zCB|>w}Krq?BNw%8_Qj$V+d}UefWOTld6)EG;HeabPw9Psh>S_#tCN@s8b6a zQ`a5hQ)8fiH!^mzwhpx2&9zJ@`viD}DRe)!-~f7p8Aem5PtRgS_FY#xgmZG>7oXq7 zjvr>XZlO*|Fv!e&ix)fzG|_ilOyt8L06>n+q%8dmUy=RSh_%n_?D1tI&D;wNec7PS zaa8BOefvwk{W|N{+*H%1g$wxGLHf%BXIx4H%$YY4c>Ca>If~rqD)L$yFd@>VIk#Jy z-KO@B-t5hq{^BDZ!((2(TnXofhW(Ot;LhcKGWkoGF=Z-!2CX-*$pXFzLr298{VbmsoWII_;@QXJ#dOxW|Pq9O;|3>rT8P8;srv4iHbkjm!LSYRYZfWO1B z^>^V0^KjR|H)ocX`Md%1bEBFdBuYkE!<_k@1dYJ%3uw|1M3Df@IODWluO--X^dLi^ zt$FvaFo27EOnmQj2Zyutv+rhS_cUXC^TP)ZCJjA>iIO=BKwR>WAt5N&c$&ffPfNeA zoyG#i4?hFJk=Z<2rWz7yyRD`+Tb3b)hrl_!M` z_;A1VN}K58$FXP4We#`ZGFKd*mg@#EZ$$@y*gO?<>fEQ3DJA)Dznr^pVJ_<-N^i;R zY2Gni?GtOVii>A`P3u2k^z&!WqBfrx&%T`ppIOJ0UGfll7{<8PGm7I3e!e@ap#HRb z_W^hL8}R`jpI^B+KgTR^LTJCe?NR|aj*@fFoH;WLTbdE=C77R%bG$u9&u}TMbs${7 z>zp%e^73zu%MbvlZ=b7*kyL{&l?(PGl1`rBDyqglhUJ5OfmsW40`OYCRFn9l7P_%p_}CiGHX znb10ARuSlLN1aeiV!qU!TqHRTauLvG=g;RD4U#V5I1;G3EQClP&i|)VOsBp}0o$L$ zs#W=Nm{4r72qcBDpfbYGY$>lzAq^1j(X@SpQ#mIp!sv7OfG~zc94m=e-Vkx~J1NonbE0ZnPMEalX;Z-H5^e_*&O`3Z9=i>Z16^Yl6vWw#FuG`34| zBvL4(;ac6tzrOV9_#pu&FmjKLH86+^S{HKr25G5r8yKc3HwI<^XR0g7A-2DnQPUHt5v6hJM?z%nWFtfh;Yca8i=fpC&wFsI$SBd>c-u!16JZ zUDz$USNW(dj;C(}c&o0vNWZqp$*J0%vX283ZKMrp!1%e?S*h3F?Z@GT@@50vkG@U< z-^G_l+%kt-84f$f;9H4|n$)jc&=hRl`l<=Fpbo$T#8mUbOIl*lyjw)mSU^T|hQm)o zY2O>Fsb&p#(na5E^4;_y-IX@nh&ldxV?2H&Nws{MY}Lb2qBS9zM#|a!bNc+eJkys4 z7V$8^<97JSt1dJ2+xiB6+dE03P4ZmhDy^Jb^wJTIh|wi43FG?>S6?W%tF}5zat9P! zM)(QI1$>uaoX~*4Rbu>--JH2h&e50ZptPa9xt$Ab8!!>kL_qLf{kYvwf%F3G!Ik<1wLfb&svJhswx^;7K|J+t znrqqKZI{mIsWq3h4%*7M>gu7LM@Mjam#KEggxh{t<>g)w7h*L$ zr*8R_o=#J?ek~nB)*_5ZRef%~-4_;iqK~H~a_F95B&3P%5a>!*5#}vMNf4d8!_Ee; zy$SD20EGS>hh&u-yfr7l3OfT6VS&se-b`!I8G4-XZNo*q3AXP%ChhX{6(|8bj~!nZ zQ}|XUf$7Uhk-JN@JK5AXMU|rlDIDRZV4ZFrT0oZ<5Z)GI(P!T3Y^o8- z55Ns!dH(Q^Pt>;q4$H^tr)eUb%*h#P($cb%-BuWI+PyYtobeFLY=Bch-{nr%It zb5cd7G&a(F!MD8-y4j8$55?aac_cJcbHYEGs|8z8HREdBHq#zC-)-8Dy-Ew!`k7t& zg@m|oaKqDxEwoB{UJYK|8FFBWXg4icVwDmBs&5L<1}lq5oh=7+3kz%gtqPOJ(A*SX z+es(9`@Qzkmy8%UuhL9wZ(OrWG?Jm#%f+tRd1(KB_uBQJPq$G~Q3zzk3;(1pZQD17 zlV+=S$70YzFqp7@4xL(cvbXHFanQyV5*_^gQM2;%u#rx`pPWUId~{-s{-Kr{vllHI z_E)yS?X@&7=__Mp%8y=(I>3aF%A}!?#~{Jm1jcSmJ39 zhr(V@_V-<`a{EA{(&jyKhbC^NBJDwAfh0j_@c-;xdVF*n_B>a}o3l}qW9d)EVS`uk z>+P)iz%KEfk6zUG((l5&A(auQx^CIpMgIJ~w#UEDO#I0B#+d1I5;ktUIcDE!22|kV zwDSDYDNl7c!+!XJDB%M!wKB!CO!VVWY|ygz|FBLMkvy_gkZ+YM#U582eYdVwn%w$o z(gp969v$Mpwg_bBK*Tz+t;i#X(b;LY3xqt;jzzN`zFT)l z`a*C)C!JVWb0^DHM@=-*XdRbuikPl!k9xcf#8oEBoU9q3lK6sZ*tYYP)!$ClF8(>J z^{5egQxzpKU{)$y6d?kEyjd~Grs{1{aQa76-Q>eCjUOsQ2fA-iHD5>cU<288WhZdVs2l z#L$@X2l;Q05mTRETAROLcM`XpfBC7^!5SLBF1115q0(&CeYT^9F7lq7y55X^147j; zyF*+{q-GbUP!typTsac@qtrml@26^#EXX9%w7|8ad+UO%30FoilBp@~Ct4&LrtdSE za$>-5E1T4HYlRofz=4xym*_2bY^xwc0?XpNiHamn=M4~+Xh{w&ER0?w=|C≀S^2 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 literal 0 HcmV?d00001 diff --git a/test-data/sample/expected/sample_page_2.png b/test-data/sample/expected/sample_page_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3732f0667ca484671c33acd7faf1c1e4846309f GIT binary patch literal 75337 zcmeFZWmHz{{w|Dxh03x8K~%7ikdy{RQ5xw+BqXIl8WRI46$D8oq@^2Fl$LH3R79k^ z1>Wmkd!P4=_xt*jPzH zvFYrVP56noza4%+vFW<><%<++8X?D9W)Sy4%8w(4Z$pKhzt)(1NdWm)x>uq$9FhPmL>pIF)yfWAQ*w3$ivd`V!y*2ZOyzI-f=UWq1Y8nj$ z?f*pan78p|9cN-Xg?}m>-Z#F#yAaYrpP!#3ISjWAea+8YnjcS7jFsv)Ez&Q0U|Q}& z!p5ap!v7l&D4jzKfF!*F2KxQ5VMlCarW;Q_piHJHq)l%??`b zD+c90S35I|(wtev96wi7oDmSvWbphusZ#cH+dk$~EG#m9qN{nd=We<^W!{M9Qm7x` zq1{*)E{G?{6uNH^EF~-3`m5?$Yn<$%hzUAt!a~~F7u`~U;VpS&>y7L^5!!2%5=SG zdlc!bd54Vsk4j(mrE3g#>KWv&oSK?aEOZ=gN!H-P%u9cMav(S|GBPkQ@cHxSG2aTE z%tyPjyYlVgo6|j47jIxXE)BP(7_f4D{RfLH7V~ZSH81@=`|&(clQhm$eE{dp1b5iU|IOS6U784P@U z8AMb2D*VnIJ$fDw)9lpi9&a~L$3H4+RK0g`d3ktoAhO;@IC$HR9j)&3--6>g!tzzu zUB0_%2luu26v2L4@pAORe$H<=%insgt*Y&)`1|+oufD!F&rZr4cUH{xf3YfEiQ9c# zDz8A94EX8woP62N)5h+9Co6*H$QqItSv1V4NYE+F5n24Tr+963nU>Ews;Rk|KBshb zX_!{TZDHSm{dxuV2~AB+bY0r+1A=*x@865@m^Lw0_#NUje8|bk$?Y(t{FGi$_4Mh} zJG)C4eo|o~uIBc*nERHesHb1|9d=$CjCa5kxZ{6mMLmk<#=e;kPJg6gf2*3JIn?;( zvTu2b@>5zKZrfj#+M*>?QIr)77}mqC`(20jnA(*!0J)*l;?dVWgZxpZpAeq1!Ws;cVo zuH(WEe;Pg<_LWrp@$r6ZfrI&%Fn*<1=d4t*###N=Cd#O@Jyw?7 zQs{A;V`ar_?K|VKhh|&V^!T%!U0jA@gLSK$^DyI0thryWo9gA;8by>-Zj-_a53j4$ zEOyC0eyz^x(&N32e;21`aXGD=<0noC>^S9R{^Ofdugdl7uf??jj$O(!Yh~uK>iL`K zM~%gVxqlOQTv{_nHk7-{$N{MGeeo{;57*aLSER07u{JTsR$^93d>(HjEF{Ej{asAj z)xyGpd~wrVY7rAt=_^-G`3q{g+`47*yEY_IB`L_L8{Z$EdV0&RTr8?jO}sWgFQSxi zbsOBfcaLv}vs#+2<bTv zsD&lTp$sKkx!7gaT>Hyso^V~y6$gjWuGVN_Mn>_q<=!=J{g3y|b@!x(QypMC#mlQo z>K1Ck^Pr$OG?4_92#i7-kLYIkaDmvTht3IPVgH`N?x-->aac(G&1FAF^%_oGEJ-b` zt$4oY)qv(Y3X1PN+gA7RqzcxRJQcP3?IT^Dsub^w-c2{A5EL4khLYb*0}k@I8Uk`Cy(T}2&EXL-jad0aZErHooM z8Mi3#ts=MABS}rqUB$dTRYgMLfsrd3xqSt_lgUU&x*YrIVr@6KqQjnlZM<`^vl3nB z#{y$!X6(O&3#v88%eSZM6o&a;O;kQT`=?PHZKY~jrZkMRoK#cIqFd>z$?DNc@pAm5 zPR+9C5-$54rscKh*x@i=nqgE^T~kwI%R+}e@5LNgU_bb}Ek#SK?S{+zHzyv)k&fYG zGR0Sm|4!9(6*we`caL;tqD8*6TIMb{`TTevxj6c963aLR&ECC+qMOmigRN$@&CoD| zUS(!kcB@``vj5AZ`s(VcSY#*mJ9Oh%)H?zF6KBm&UK@XZU=+NSKG^3(gcoK z6-_<}V$(@Pr(oveQ*Zk0Z$0t-!_uEOei?4b_8bjMQ#I__*FSHQ4dJ{bFS;_bZ#h!f zwas>`V%dWot;McRpFe+2!1CW&>c@rd5XyDK7wa-+vadofQ*dqt6^7K@9E(od))Fk= zP!59!#&ux{t1HXH+3mU*({J`W5^MEnXlSsqv$B>K7x#(rtQDYlv8?O-QRbbkU$!Y5 zWyveCU~*-l&o9VfU$5Kr7dNWP9IM{c^LICyPXGR*HtIU_=PI67I`c-oD$vHv(r{Xm z+v3!sV(`;U1yS}N+5mVg>om@Pxd3AM{%L=CVb50Q-y<886cqz|T!vYLea6Sf(@-=7 z{ub^JUhzS}7k{ul|2m&zLS7!ARsEe9fLlv}!|+r>f%(a! zM?VbS`5P-8%;sgb+FIyj1t`mU_Js!)JvSECU z(J2bi7nt=*ikQ_>!}@FUMA!Z*0mL+~%=e~6dMs6Ce54)4S;e6pbbH z#Wvsk%9V#7%gS0~r4R5}c5&Afym|A6$8BMPZj|d}5R1lZ*RlM|7?n(mGsI6Uz-P}`yV-;{TNTf${s(^oVkiZ(>14Ug4!I>w&kQyP5>nfgH zVPZ?=wI73n3E175UCqtSv$b6Hr?8Z9(IUsOuNoAs{a>;CXFu(c@9<33&d+%L=FJO# z|0rO$VPI_mo1gbY(2(OZ2LL#SthXAXp`ck`!K#zR=8}?;A(QIyck*)0$3IPU){@7TLBrE9BNgbi`k3mN3Ela!KryficT27vRVo*DhQn_+;XbgTTXk+r@XHt+m1 z-|Ly1<^ABn?`#>;*}S&b2``UilI7EE>AjP_=}cPDYb@kM?R?wE4<9Pn+h_g!`7_lr zpwoVk_NuVUOoK1IAos0_Yu+JxB_$;V^F6NFn8h=x^eS&8c6|Qy=?@Bk-4=$&dryEH+cPkqe8o(A*LIkinhy1rmKx3d1~7RIA~rl(!Qdp2lx_Sa zG?dfmaa)?6Rfx@tmoH61^oN-NP|~#(BfDQ+l)+B39l=)Bw(QEXxs-r`v$kVtqK=me zW=mO|9vB9(E4luDHv>Z&0TLo*q~@k*W-HbNu>v!l!Q{*9>gu*9j+`;;Eh!dRUFbX0 zri4~b7y)U27H0rlR8zGR(2#X)MAM3<9upX*lV|;*C&#E}KUmDb!rdQvHhp1rzYDed zt6yY;-tky;H2kd>I zhb;Rz*Vx!d%VXBUQ@Y{C&C!l@(jaXF#M5L#I9(<_Y)*5(D#urt#U?DQ18m42`eP2D zEWvsDH(Nr2`|_Mi{|hy3PF2Sgjm&bR*9CfK|!IfV2MEE@rBwl$2@P{@sl{Gny7^BTbD%^`WzLK9wYZf@J6{-u{DTPpoy z@ylkQPD4G#g)6qDNspd9Q3Ax;&!&B9@MrEa8Cg`1mK3dXDhZ0mMWyQ$0S>sWdWtOW zJAm29ZO8y&Vb)?eEd7Exc4>B4(CwkDv~)A%f)S@rwZ0hSq0SqTUmVx`{r`DN$FI2O zgp9RGB$}A?`V4>w*+`LZ(O;UIl^8r0^m9IPyu$4yf~+ikze_!0nUIh`x;!{*h){co z&SvVvSzm>@&&10|whcDNXWytlOt?gMj%7{8cuRtkO3amAYA-@gYJ3}<{q$%L|F%l( z#~Con!kD<^wz6vZ)MQci;T!z~@8MB_Ed_w#%2|DPRZ9r1CGYh~5CRj0=`L?kSs2Nhx zZOp#EzwNT{!#mCNVFMa~N~$)$mV0=L_z6i6bnBe?0gJ{zpFVw}qcrprSu*h*ubb;I z@EZiIw|z;I;V`U9FX|yw@1&xgV-d2Gj_-RzTap@k{IIr;tf66yxY!9v;Kh=-b)6_q zzh=s*oEyPGu!P*%=(*T4wpG?e2)jN#bNh@N7(-XCRit>g@ch>|PTVhG=mW zED!Ccvlu;8=Bc>Mj?_}9xE>1HHvHISjHkCZfQ|9 z*8Z(7E^3-LsN31qBJKjMWY#|XmS^)uQBl#BCn5>8=saj*)AQ3xVW}bWKcBEOA3OG% zf_Vc0ERSgnD|xM~tiCz4>l6&97BWc!$D&{)k?$d&#Nw)*QzvB^}umHtnQ4MNRE@hppngD%WRQTgha5n-if)ZQeCw zGIDB5Y3)|e7zVzBs~D~EqbA$f*x(*jQ!8qdK7G1)>Cz=rh&gh-T%Z}rgrTEMpYi&4 zju;t_h^G=^1vA?I#!rMQ@$>awXtc zP~pel7eQHPAYTY(?Nb&Diik)>b2t0DFe&G!HTYBD3DtfUg-qiwsWuK|`EA~4XdObn z)oHwE?%goPb_wv5lw}AA7X}9hgDMUhaJwy7-@lJ1$ZAxvrQM=ErrCR(^<=P}Ze6FQ z!AZHWN@@P3fk;o5VE%A^JBi!3Z|5K8;^Ap+3i9{&AD*;L1bPS+bh_z#SP86YADcE` zB(rUCO?y%xTbK+mTe$R=tLuRIDOcf+V%OZ*6tq%Gg{@OV z5<;7)=>=i{_O*=DbrQk0T+ohmY(oUe=pAQi@-u%8EFUW3UJ%5tH)hY<2HkktVXeKp zOF`{f@b~i0?NsdSX+_VU4S2B@rUp}fwAzbalAgt1xbZ-H>7hY7Fs`;_jYO^7n?XO+ zvBzcx<0H*b=9gJ0bL%>RV_S2r^dOvfc0=)h!9MW)346)g+FBX! z9NeJKzcb#xk1hS)22W2U>Zy<9IJM)%;V#-Lti8Cisj$C-pt@O(RF|_ zc&ItvuixDkkRNTs+P5N9*fmF-??it+f1c->N6ijK+-K~$o?B)8%fw`!y5qHdKR`!T z>?m~Zp|0#CkR)5-R1S%&SFdWOU%zkE?X_-$t?<}WGZ3t$nP&OSZ=PsfM3EGK1rz2N zBcqO@JZM^LwD@N4oL|2Tg=bro_-Rk_^0w{%wYacg((z8;Iki#8@>_ult5!}6mI`aP zo4fn$hs_MX7HoC2Jqc$ENq2^F93R}GTZQ?Y{X1Qcj>4v`4r*F&_cT~5!|;*OTnE6Q zhTU%5b~}A)?(Iv2Dx~R&5@jIT9q5q=#f0U511;qboty=cGO2yZv4pYx&mfI`D;&rl zJJd+1KJ;?+I|()JK<~5y_HSd0^-4Vo7Jt9eQLTT;VL%p;H+9jI1J@_dm;J9S0J|z= z1s*7bNg^KjZZcYcEOcFww|;JYaYn7q$YJ$BxTvQtx>TN7DNu2^h`T2A=iKYpuV+Cy zBJkf-kD8jgc(zRoV!wk!{;4DEMH6?hJ^QV9dQ4TFbQ#MZm_fPKn{{`FRWQ^P`=l;X zbi82|XtKY?Xe`+Cs3Mm7H>|@>fws&f(uNNm#E4Mvf8Nf?H(Mt-eu|0dQGu8NIr)(z;_m%&pT(ad}x0FsO#|2O=`Fsy=_0KSP>uTp^5o!fEYlR1K6sv=cJsya|*!@4pjB< z$6nnmIIUIT;<)xDgsY-In_$Kjf2sEgUS1Rcxl-hEWjb{hX!krWGbYRRJv}`{0WT^l zdQLcO_;(+;QG{&@_3BSbwB*?sjP?|h(yj#DWnB9*8i?{O?2bgm*vF6evnHZ589G;) zgG^<<_xW-2#r_&`Z(8%>eSV`7JJB<*-@87RMC%A+gZGlvq+HsDR^$X{jA5s^@ z#d$ne-Pl&DFJSxf0P_&x7b7`02O?w!Wk$^{+0V}p6!I;pvC@{{G?7 zjZwg5=8sCnX~=0Mu!LGubp#m_?d74s5}AYeM?k$PQ8nj9CTC_^FnfvUPy#wmW6&R9 zpmnHJ1l(m8tX97G{ zX4O8XC;e$lc~!DJCJ2YXXqf|>vl)~KzH+@=^2pCSJrG2jf$x-|NYjay0CYl4*Pn}e z0`F0YXktV-1)SOCn|~V(l^}AcwsO8bj23vPXmo8rZWe~b!c!;pLdh1RdAP(AXl9uoxRtO|aFB1&DOhQ2heS(f zM>?Br4IZ0oc!IA&1f}mvomrY0`=*5 z4Fb^tY%KBLh{TwKB`QqNp<~-=xhpd!?6EJ2+z9J<7}^1V`pfF)rwKRK<2YLs1hO3k z#3l~OUBGoN8P4fm6dwW?`S|!Mew^|OHmZ=5ZnK=uaD>Yr!DT#g(!8Ta)|N$*vAKy@T1D|O=uAy$BMUZ z<$1unGgqL`AY$jj!h+CKO!&5^hlMrA;SlayUO|bY6?Vzeb)Rh&8l_&N2j>Zw@H?FH zXwS*t%O#+CsnB><09qDH*z?NKy1CK1+z~oiEJ*_y)qQqCwtAiz;J-Glqd5Xf=b?yQ zO1h?NH#iG1E71EADbCb{019hB$`o*(`n7L4T);sJ|80U2n}qFi29%gq(_hX_D-U}%0@f00)xYeq zd(WPIG&BkMb^`?#wSe@*IRnCNg~+YLo65z(!2z$n4R<*0Alm*6P!C3`A`}r+2X|=G z7|Iqj9v#je{F`)Z@_ACXrOS%~ksC3Gxw}{rIgE^y+iNmHXt)0z5kv?qO2#)+cpchD zMg&NosPfSHjI7Q;wvUs26$d+h-!-E}1GIK2IXP9o!@~BUeR$O5C}~?Quz^Gi^$H-1EzgNcZ1O4a{et zk*VNoNrwvd$%Uq5*;Awe%l0`FiD0nN99Sck3Vx&P0L$X%{bB`X43EL`zV|AQbWb3>ya55sq&z!zo?w^zRz+O2Z6By zPI!$e7IbS~`)XHjil{+g%%49dXeUH)AV~nE5#B-#ZSQdcIVFNS45K)}(6=^yemB&Xk_2id13@mx17@qsK)6#2 z!cVO!T51r%)N*dH7a^q0`$(Ahx3dS)Jem;HqVrn5-=B zVnk@nI^IS9U0ETr@a$moW%O{TgPt&A$i0N}nE#iLo`%N(3#A=q5tHQfKz%z5(L`J) z8*N|DZSu3qa1Xj5DAg>q%faRGQZ=kjr1U7!{LIkRAk1V68H4B#eJjj0YfDZ5p&icY zzS#`XH5HnP`qC=2I5IwH-ok_=xQu4EKL@7A_V|}3Ss}~?b1xB-OPoPySj~{A9H0_g z6mKHP1724ewqPDNnfn%ay()Ru`b6-DOqyZkI+PG^4;7$z;v-ce45j{blCc`g>)T0* zTp~gmF322_+~M*Zd+A?AKpTIi&*kONZ!f_0unfxn3yp(}3CdO~sYOmb&hd$=DTycv z-8Z6GbqbWBBVWZlX=a)HnAx3;ha#*2+wwUg5wP5nkBUD~H*R3jE79JyYu8erpD59= z5)p|cUp?AgA1)XltmmNt!9|5!CdVQHf5$I;lWi8?Np1v|shW#R0Zc@0_a*yfM;OX1 z>QV4&$$)?_!RC4Hdsx_PJQG1b0%;IIBG931flNL^m*m&s#&xmxeZ@|~b+TaeoN049 zj^%{g4!CpY&fZx9Z_= z-0pX6y7yPiSqg4}&R8E|BjW$4n3%kUY)-iTmq^iG{RacU*W_W51FO*=A@Uv_p8_U^ zXx1bP2WjXU>#E5d+HcPOb?>cg3YS7w@th6LxE z2eb!xQVglit5|knBJx0QWO`fQUS%Ye1U<=)?_}z)kN2s_V!{d@_4J0u*YZwZym+$w zP#{|gsJ@dL+3!$vNMZ(IAnSt_jy}BRZ88XwpjQ3s4`5{ZXRz)gSBi(Q^wscn_Avgs za&HXK)k`5KH9GEuDn%56vN=@Lw@7#pl|UuaSeA_2&fv;OFn(&0g(wUZOK{y9Bof?{ zg0k{+LQ=4P{t&7IYaM@|T5$L{l-!RL?YE&9(4zGA4G){6nCRm#Wzf!^GEG;XN$Xfn z(Jk&;SXv5&*$@JT7Yc{>Q%jOs{S{91YfgBwb0rvuv*1=dxG8S*6mDp>C%Cy=u5iL) z{*8urw)`NMMaNmxEqcbPmQZ=VrUNL193W~5%46O>N& zjgDH9%MdSkJUAr86i?&BM6^u+|7*zX=tI4efe+xrggrIJ5;+Vo&>SPVhq3A_A}l9Z zSZXbhw_{>rIw%U*|QB~rcr)5YiKRf+L5|7MY7;J z#9Rw-tQ%0i4U3A4zr52g^I=jd^>8PTuY@AcSe2}v{!yeH33VB4u%}GqFSw90XwEiQ zQ+lg#R0-LzX*8wo z2WiD6(iL;Fvph!C&pA*55SQYQLlkGO{TNmZ86%B0M;<-**%xItXn71+JkaohN)VAQ z2rz_@cDV1y4}ElB`Oj^Wn3BKIkW=NEVP(>}fDf)5h2L0}Qce z+t0MMLDXfeni*=X*?UH{mJBBdC}UNYN#jRI6-^6^i)8I|^+w*kdlxz6$L>A|yOfjl z2cP*B1|S6eRteP{%L$^dHpwL9;>U6S>NZ^!6&1+8eVz#Pi}cffUcyy8Tp6ZV=0j+0J$PSPOKbpeLBePbVvIB3igfh*4W%D@z|@PTB} zGi2Z;k`;!AlOY-`=roo!zk*pG^%O^w__tKx>tqo%kVV0g#Y#z2Z-)>*>d8nNh*Gwh zN^`owWu?~_w=!03rx$1;qb2o%IRuG-P~^&JC4WOTv^zL}8RHI=0WqnC&VC({gBv7b zOO_`Z?6vWEh+YRJe`BuRjWa^hED-~4hIn85U?_a;xgxfXmn11A+)a1wF*f&Io_j3kCr1Em8?_PX3>>Zg}J5C)6*k6 z7mK78K@hvoUEtfG4ckaoN*1c!X({nxVa@*ftMb*O7aT4H^D~iAnb_^1d#iPJ>Jb|@W%U5K~0HfRL7XqD61FgB3v_F%alUauGtNR=r3F zkljKWA5_Znmrod~nL>cuw6iyL5BCoanv(FE>+;%4?^>r`g>?NnEqeE*ne<#?L@^`+ zLm-2fb&$b@63I;#H-le}S1ppOMRQ%|I|qtJH;jS0{<8ktFo?Ze_I$<$si6VGnX@qdD`Buoxgm zaX>2OE>nQ{E+_!5%Rp))(XOa>oyhT$nwbDqq0F4;=2t$(svpHX=Ro+MVkL>I^SI7g zxGLE5YfW^#zC`6+dX=~w$Hhh)-*~TBC6BsEX4cyTWV+qAclTC7RINCAN*Iw|(gBGx`N+@jT>0Na{z$mIB;^*#y^0>ulLNO@ zC43I*Gj*0)oGpI|tV@feh!UXM@}!jyhv&*{@M*CB(=c^cYJ#NKZpuaob?VoGuD9vy z0c_g94x|vP`^P`}eWx*x&{QR3kR=KtC-gurjCcBGc9Il`)dO=TZ~~IZyWGz88PcLN z2MuabXp9&C@o)ATnF`^81N5%mHoZzxtPS{xu?m~LqN$y?uX_JYNW3R%s4anK>g>ee zru>;$hguD1zz3YW%v=9Zx6Bc(KSr+MY-?VnSR#x%Ve1?da7?2{~KH=yQLGT1Jm|M4QP4_g(tg5Z$ z{_x=gsh2^PYJm*vLO9CZ031l)5h?uHpElgb2-*FHIVKvzKs3$ zlnH2;4%O|$XB;nJF<=m|ue{~r5(?3ygIK0kOd+6^d^6dU-N6q`c@aHERff8ex=_eR zRcR3|4V9U7#gC5vI^ZzYRDGmo()7+5HIX8Qo$a22g~2k;!!KMBZnNLNbM>aKfI*uvq<|oHx1EQDOrVeZ zz-JFRXB9z~B=&O<%?Bcm{*pbqj}+WRI8j7`e=|F_Z-35o{N%}jg5O#<^FRL>fF*!X&~Gyt10PaE$cZHq z7sh@pn}Z@H6*xEEn+8qI3`-MQP9Utk8#KgPBqo@hc3EsFVgR_va(#s#Lp$ay0lWPS z0tiiOZCX~XXu5AeO5i?~^>{1_sDZ!)#(;(MWdYkGhd=9>(Fdn6H>4ym~y>+`+}Hpn+M^a61H&f@hS4dbG3;IfmUa2k+^HowO+(|SV0gM}kbv1s}uz4lb zL`6_APE{@T-X%#a9L@<6+3Yq%4J0Y%+{@Ab6OORc0K{kUS;Z z-g6{*RnD#B%dHM#H8-7}m{0(;E<3i^>$z5pQWl2>B~`GnE)V+Ywyj$mLD{a42fuvz z(x@1RL7tV>qh<%jphjuioSy>H*n0~(QOFwYK;vm78!T*0P9Z^b!4W#$*^Zi&uZK6Q z365D*4E9$LQ;E(ar`VY2iuE0fexf`3evu1pxhmNf>^2(DWA- z3o3j0P;LY|Wiu@FFo6J9hRz=0^e2Ni(PIo60f<$KT^!<W)+C0k7FOuOhp4XLb^ShQN zHYVoRLUG?zJ7ey^EyoUDKZrgzItQluQo#dBlER*(Acosy(WxsZJ=RgYf3b`7c9A0O z(Vbp7R#M^LZYvZlFxX+;x$>Q;n%a?*^vmcgk$Ry$tY(fLn!-*cI&A%v4anKtwNX%9 zxn&%55^8raIxbjW$W(J~X|aDw@P*_7@rrx*HWFzsa0X#w5dE7|P*4w96%i#6XWS|) zDlQ`v7A7uc?7GTcS{OBBb<5GY7x2aO=ch*+Z7*BB=Z3$mWjgiPT-EOFT^nIDGHpuo zdiPjj*XNNU%>;+NswaUNeu9)-k(1m1 z_exY%@y{`7qtQ37ziT*~C0Sa3I4xV@J2Yb>8z2??&y&x2IE;PYGRy7#P1rWK{w{Ff z_TlY5MfN4B_Mzd~gWEUVoiu(&LDLuBH#D@30;dBWRCDHH#p@%`^U&9~9Lmkc@BN&) zQ_`+uy`_FQqul2cas6u2Oz^7JMSD)a@;6p*Yi~9Eli|$=+ zuJ_ZYI0<;m3sm660k@l~VzNK~{Mmx@?qBn4Ho)0#XxhE=&{xIRkm&NtYg8*zv~raV z*ZxjZBZs?a6psUk=WpI*!;zK8u>ZE%!@^)*fCRTx^b}*i)%S&-L>231Y4}EkF~;a~ zm6et6k=#nsNOHOx9etFJj&5RM(m-89BcZkg<#I2ZZqY+Xbq5a}Dpl#tTlJV7QptuR z==61aNK6b<_Phnq8BY0^lMpiN+Q{grzM&zGa&Ck>{?_dmrtjE^6PsYo9e9pj?iq~` zg|(AY1@J5f#KjS)&YDJQl;>P6aK!K+MAB*-Y<@anm%X?(rLF!dmpUhhkP>C)x?^Ur zUGZ|~!1+ZZPh8}ZrY0>+8?D%I81;qADXf5gUd0WS#FuXXA== zVig|&HNLN_^A(L#X6AsV_v`oX>o~Be{_fg31Q<60<$q|JJ%@U*5qibFk`fWXrk1*E zMV@OSx`mu`0`&st1IHg(0y~!=7b`5cN!*lIbtsnXj#z z5Z*r67utmEkC4mE7KBTf&sSqR|3GYSVs7sDT`Pd$@*?MH1(+;R0D~Ug{b-_DUi7G_sGdR_pw&8x^XJc}scgR4c|}sP z$~-)6=U7?#h=&l)AF3mH@%ZMoYex`Bc?XaAwh$xZ1_XaT;fw+W6%`eQn3xy^*4ZSk zx78l^;e%Uhf4N52)z$Tc?7%89Us!*vObp`O6_2kb>0Q0K(^Ys-Bo<8WN$KV|w&!eTGc?93K51&?9 zV%+^GN|||)7dL$$k(nbH3>?Yc{|9>7F+RS7FjjwUcmfLYQplOp=jqd3yLaEgt%*k~ zz!!1vC~+^0q7$2??ajB_3~?Q$LL$~9==t+&K-B(Hv40S{(F})>{GqC9D_Iao&?P0i zIs=g_C@S88RZ8^>(vMeujVIuCd=tmRN(`A6& zM*^;#MGC=#-?THMS~Ll?;2}DW;f)(=L&Hd0A=0;Ms zb#U$P+P->`ACtW_G-2izC>8SHh%L#?BI`##JLX3YDT zJN3^WsjaWCKyZ%(vVh1tHOw3eRCH7n1*ZPb*L*GsU%E%IZLh3BR&1<g(4qnD-_#e;P@E8_}q({Cs@=7mr0ldYvrL-d_WJveg0#@okC*v^mNt z?Ee?rpAUV{IHswt?jIX_9Pa!xAZZEU;Ei4&o(m%ZpfQHmu8A!zEzQ8JZ$c(Q2HwbV zlrxc<9#FGInJBa~MhZg%191qnZ{V5w=jZc#3fCBW71{Q0qd9oc|IwqZI1L+cL0o+B zl~u`6dU|?J9-dfe*iyq+BN8*zZ8cV^d(OxL@=>pg`u_dbQ!~)lcPHv)BRmA=teS6WQy#sgo{7_I^HOYfvwWho~Ob6lo7zGKti3lPGCtuam6OomjZThDndM_=l6c7a?7Z+FH z6(+axPfbmVB1t`13%5`PdYH%~^YX@_*&TBU`5@2yBJlR@b?`6!>uD>Eio^J9uE%-+ z1C)Lod1UmXya^y-S7Q=O5bB~zB^kedNKG}`zqU0v@TPS`wvFZ^QBNgJPK*^a8N{5GsZ}sXL zDK|nDOgQU$?6RcfRt+sJs*(JHg24Rz{KsP$Qk9H<82GHc0Hwg(8u9v_)3|liC#mxC za;AS-S{4`oOl4y0N8mKF=8huW+0kR4q(c4j*D9X zA0hW0slb+$6C8YCT@=Xpx~iI*Qs`<&4;?yWYi%7hGGgH}@qHbX$p+Zd z&c$$s9{jS+mojrW_L{ii{j~5LCK=c^ZQ9g=wt)9=907cx6}t6K?3}Q0INWtf<`+{A zc6N43%O67h{l&l%PXt`KNKuJWf@sfq^dhFlkteFr8ysERHiJ-!BwKJZ2KA^vPV)F`v&G|KxBkMpZt{85rx#1Ll-j@R zBjw4SK`B`;=HlW)l4jL)b^HIo`?zPwNi&{QSSUF9tuPobig^ps1;t?Fhjx5}B2M~L zHZ}%eU6D=q2Kk-!QMR%;VV(eG;qPql6{Z&Why}=0#5yQkwybE6tiRtQt3h?X4 zkMoG7C+3VoU?T$ywkb7Bz5}2dRkcPh4TnCcM2h%u5?m63#z~-=C9wK4SzVwmQdD|~SWU={QMy3;!9(M0s8ot5{0Bzp zHa)&MIlSb!0$oFq$BFQpdWu~!l1eCPk_pP&M%a)< ziS0$S|3O$-SY=aFAegzt#fx~FW4J7MeL_n;cy9m(9Q{Bo(P^}c2T#}n?;IPr#9a_y zg*aZ!V-krb7gkl>&+ZE9g7|(o12y^~34~?gj4VE-vS|<_BWar-hJyzir%-k@greUppZvnZIe+5$@1B^h)#_g zQS$H*VFw9ff_Hbm*WShk`M0wl@}0)M9?jR5JENMcFzk22y@(SBm#VtEU$L;V4x-HT z_oFg;OxkG0httah~DBy#84DFO)jBvuIbJQI(wg zfBcBP`YxED7awZ+U5#3y<8{|eKudkQEDVfJv$B4ME_wdqyUffaTgKl`vbe(-#RLiI zaYRifepT(sUJiJ1l8b8(V92}dY?aPK$vKsEbrLQv0x0P{L%&A>E5!jA-(CB#zBWSm z5YC8Rk(URXl#LB(#eGG+c{8o)YC>Y5I9|X$f#g%-h|#8^THU$7i*}gH(l&{n@k83( znORwG<8#@P^75A*9eMHSNh1fKYz5pdDiZ4G=$Lrr+`f@rw@A#^mNPjeMgQ701p~)k zClC=VV7iX3u98ffm#&8?ZZV1?ZZ?TKH!(L)GJNN*gk;WDMaA`p4!z3dRV_7txW$h_ z^g(Ls&8H_{zuk#u0XlL!AfWM((Sg(y5nXLpoO# zki@&`=^Oya8$k|Nmgf!7)E3~LX;}OG=QHG^s}*PiApD-|EiElyhK62{mrs)zeSGm4 zoq+uoh+H2r{kv%KTF|rH+@An#kSGvsF>(HXzxVEkTWi;(SH^gebg>=rYiMfohF@3mwRtH@G9fq3W;^ zs_YIuBr8&a%ihvpy?h@Zr^ctXaZszRW~d{b5$3Q`QvX>qUxYC}^!75KXPvjSiY#zn zcC;Vq*fkFgzt#3255e_6#>f32fVaD7U}!6#4w)6x{bw?)4qysf`0)ChJqY>0xM4#H zh*zy~S(-VGx19OnC2pFm1MaWiz555i2K@YdO0WZ@IwWQKaABV7>>y!J4zQy_ZiLNG z@GNb*)-G^)ab;!Yl%UBHn_rc?$ZuowW$U(~KH)+9;LX#fAK1VD!NZ4JE?&I&ox}%s zz1oK}HD1_teJIJ{uCG@3uHIjY7pA;!eAoSqro_rs$2XRU54@4vGwGH_O4eiY|u!w@$!YX zn*Xk4N31Q0r-4C14*>i>%o(cp{|oJfXa&p1@S~k=r$&fHa!>b3phwi`x*zaa49j+{ihv9ML!|) zEP!X57l#4g9l??K@;h5FaAhE#i#KXuOqhLQ>)Y4a*@+LmN3Az2PDZkgd^V{>M1#ZGT(8VbE@TgG$Hc@qjjBFw z_v?SWxAk3m`fX5}uiw7yLXiFX02=I{rdTTc9`pizW8(+A7$x2=2!g!dx^*iG1Q;o< z2RQA0t+N{YrxEz>Wk|?*HMIj{V`J*@pU@bHtZ%pwX3PH5Osg0TE@g6=7#}RcX zZer5XRM1FY@>Y(p&x z8z7v&Fe<)y4?rXeng537=DQIQhqZNd(&2L7)|HdniAMm4zX$p3Lv!;U0Re%(6(YNc z*h;1ezm92gnHx!H^x1-)$f8rQm*Om3TTIJ`iWbBb8}jXL9HgN+ucyZV{(EONL7BM` z;Vk_9Us!_cyO9_%>CR!rD0w3$Ar`GLA%ZaVCKQGC1(&3|uh#9}yZ0WfM~a~vQQ-4* z+wQMNI)Wa%d@E2lHrWMS8Cj+>ungroe%oJLph{AmIdg{Sf_TTv2h=L=sbQS6S2(qI z0TL+I!6Q7781swQ&^*Xb&R^WJW5@j`PpEna$We{!C;9nl0Ei!;KcTZnrKRC$fy;Ne zp1c0w)d?GL2e@hVLPu6a(Vsw?UCle;u1%kN^V^*Z(eFWg@MgU2_b=QA@t&@D^5jW6 zUXQ?i^Xowj-Mfs83knMVz-^@DB`ePE|{Ykuc^~2Y%bhi0)NJSQw!wneC#l^44%6>+k;hMQQ6$EaqoOKWh$q#|j zu9=x_L#2R7cT7M)^K%`eNZ$gy%H>Y)w41g7_p^2?W1y z%?qiWx_TsHc}ktJGUccT9n}%pj6;6-eT)%sF zSJIr_mygdbv|z87Jb5A_Jp^?~c=-M6Cl4IZWG6p6F?8_-E>zn1V@;}nv!Y|>_(0NZn z!jGz5U%dV%UDMSemyh&hhFC$8my>I!Tuf|Nkm%5l)_iz!db1Qo6AU`Wd2BDx3%WF! zM8Oq&xwfV2cJ8LQeVXYysJDEfZPFsF(@Yj+{0i)Qo;or+>3!o>h&CSVI z4-!W=lQl!_d;m^hDoq;Sa2tmVs#8UIikFvBZ&f8(GjQnvOMRJ4&u(jOj=)&7T(V|N zI%u$3H*elN`eoSktMpZh(l`qXr6z1Olf#w(Em=*N5RR(j1`jBpJ@FM-IaxDOaP|^P z@)t`eLjOT1BS1(rSUty&A8$Nx;PHDye0_b>GcuAf`3VuNE=YAEfRc*Dq;^a2K=83G ztIPIe8xT7x{CDt%1$-w&d$MNYUw!3kTS!M}pIqn86?hJK*La)?%)cB>eGH}na%#nN zmFCo`Q+bQiGCxBCiD6O&2|yug-#&FUH8pAqHZAW%bf_E%X2%8!JVYv@LRixkCotVm z^D%(jq*rtEyuqJA$cu=GH+a9tj~`c%#M|a@*;f0U2mzE6Cq!hJnn=;nX>q7>9ta{tP81!|%8l5sfnL1q^ zvbCM^lm!cfljVk`mw4~{2`r>pEfyIAxe-gnsSoZJLXcUq4xG5&!-wxCJ0Ibs z$OS^Ai66@EI=t~Y5y1%Q2C0aM6S zGF8?L!`7bDr%wlRJwOPwMTsKze{5`Q;+7^7AF#{yM~~uq{jiIti_DU_X> zC@{cdMr15`wo94}e6jkE*sI^ZebZJ66`ncS?*)`46@kQtgm_RTJV3#pGl#*S>2DpU z;b_xd`pHVl{{bvC8~6C(!&s2=>jeeD;3ACH?11SP#|{{A_Qkcak1wwJ*kk9eT`CeR z`9abkAg1fmrIXmUFF$;6N|{5e?l=5YX67LPItGIJQ`df~IusYz0h~jrO`Bfs?(VW? zlv}Sn5n$B&BU%X;;1z9M<;l*5Sk^kw_u$N__4V*{bOHQsPmR+Lny9tGzsg4w-?50jB8j(7Iu_{jx| zvs8!;hN8se8K}qk{KA$>N&-P^)v8qu^-Om5nKRq}6k&z!p6tW7(~`b0#-{KRNo!9@ zhzQq@08f^RSeZ3XC^q?$wuDPPs1MW~*NcjxIO}pUq5M{R3A2gR2ZxWA%W6D&^vG`3 zEE{ukfqO|`I8(=Jz9UPMqR4eG+Jrb|>=tlpI)r7t`W)-z=nyBTN&TFY7X-GF#K@_g zt?d|da~8wZ#bu0i1VlFb1|o8Wg#G@iD2h z`w-69<3BV53X;#el5NcYtX?x_jO+}k4iJR$D>J)4{rwzJ%+QyHvU8U%(HAdXO#J=& z_3N0!hjnGzow<+wLS2)xG9f-hDq@B~&dvW*K}R{W^4i*5c{3ykHwy*XBYE(aWoP#@ zYaWO@Q{SOiGrE4bGE`T0GkD02qN2%@FM-Q{l9@cQnJe7q7xwMvdVs3>bx_*z@%x7P zg#EFs?$qB|l1Zeg9_RcEob_N*(paW#UY2$5sB!<%qeDPWITPDYI~h5BaUlCO<`RJ%mIgTg z*^nBy3#n5Nw|P@jGZ`(K*o(Y`dYK-Y2k2X4h_xJ6r%Y51>kMw+xKU9J$Ivy@`~aJf z#--ttS&E%4%)6p=E-P!Yg+=p|cQb-%Psteb=l8uu;B8`#>#O#t;0B!+tfkOS~w2}s$gYfd@OLG$w zlNAU;P0Jky7Y#vzDr*MocY=*Z+t7=@DngQB)z3qWT7;Q)Y5;2;F zQ(F?YZBB9f_T7yfu&eoXNnxGYYS8l+IoKoI`u>Rt+HKU))FhwI#={--Tz`LV+E!%NVcPtmY!bee!ShqwTiFSnY^0Z zv8G&s&>{J0EF^x(1q$8bf#JxHcz-#6nta#$A!?BeBo^pKAyCFfRs+^eBCMft6)E09<(QW(9;!r!MeGIVID);BWh zq9F;u_a{{-aa=KIxA~xs8iF)el!)}9@x5cMxq(6D>7q6tnjLH$X{fKS$xk8WhB&PY zq#~Zoe1^Pwv!_P$=2h{mH}Be4&R?*-^?Vg&Q4va@>iv|JzkYl{4M3f3xA-IK#dg`{ zvaYXQy$Xu-J}`ZNI;_B97k5PA`Z69qM_NYpC9`=3ZVC~Mh+H6h^=cu?fE1u=xj^Lp zmgF*#MbrWo>6=}ZH@n$!@-1^yw=1XI{(HW6w!Z-tk$ z_K~g=%03x8i|j_ABlCC>K**KWx7GT+=yn zq2}7JtuTr^5%!*vpZupHXP70;_~AU==U3LS2lChHug6Ma_EY~Sv{$3ei}Yoe-;1L$ z${_ZAnOMK7z4NG}tKF~%WGH?loTgt<^oEvE&(19$ukm{CrCGjP!o#(;S>}JQN=Ha? zWTuQUW!>ery5{CAi^!^s&B&f3cJOB|jc2|i43c8x>N>Lm(;@cDWUTv{@#hX1x4(Ga ze~*A_BHF6;?cZrot|0Z};+j)w<2YI84Ff3|et$RvZkZoip3PbwErHo=F0DJcgYux6 z#9lpopbV+*!XGz&T-l$L)JzKUA12kU^Y-0=X|252HRIKGtAxsdQw&}EMGw_p`OBC2 z>Q&!bR+Ybv-nOl0Nle68N5@|o>1`3jDqAP3umTI;@7l4WoQ=hO9f5ZG@{-No5uM?I z^1vr#BrIe_d2w`hX0K&k7hgDkUg_Hl6bd>$O#QB(jjYc)cTTbC@uNqZsP8TrPND%N z8I-?&-4-Js0<=aDPnMi&`Rb(W6K9 zWfs-mCV}z4u53@n%LOD?^*STykNR;fLoJ!(jk7 z#s|>1%U%>3BbIR!tz%n600lhtw5`j1Z5Xw!|DH&nwqxJ|6|mh+=;M<3YCA>+arY1{Nz;3`7W> zXnaR1FEjh$9!}=Zubl4K>eBxW@4+Ix=kabNiMfo+)Twq`N3E%sLy$~3+hBIb|CF6z zRtVP**6neeF=JZcBnZ`v`g--!>WaY!Ga+DnXMy}kc7yF+z3etCY970-gaM{jp+Vc4Jv$r3PHt0}=7f&8xUPhuXJG%1RuBhnfAeg*nl9+F{cjxstFqAE4_|@#; zd%Q4OOV0D=C4F1%Q#yW}XS1T?{z8k_I&hh1qMv*6_`FW>)QsujM5h9g#yR`Csmv!9x!aVRq9kWA< zP|%hWCQKbZ;DBGR%cViS%BeNYs$gX$r>4p|ou6*bryeL`Cb-MzNZ+1&hxzEQYp7_k zWp>CJR-av_CtE!LgVs1k1>3N@)1mkM}t~D~b2|1Dw~#%iQAQTFT0UiCmc5Unn!_D&m zryS0C>kypuztS-t3keNfA0Hp@yfiZ%5)xT@IXdm~?_2Mw!U-^L*IB%2b!V!ojt|Za z{(<99gK^=yBN+70g+&l}GFt7UXPCDnRYE$N?cKgT|8Cxqnql5YF1W+wwF@B_{jrj#Y6g_@Y%{SD@SR$a8AmwKfPEE15z+{=mZL zzo5~;kNrkTRRJ>n7Db=Gwa^XEyq5cBCe%#pP?-Lv!X)ds$E>)1$+kD#*U}hu7SJ!N zYQAaHrZ2)grB8S@sY||ID1}{f!Aal;WD*(Iu1lvEj&d;QMR&hzsF$WdH*y;5C&-%p zoyO?AMSK8ErrI2gJZ%6E(di5LUD&$_MUDNWe$~EiCI5m|#FhJ~DMCYP*!XrRc<()a zd>DXDh&8D*w@8yIWc2#<2@eUuziiD#Xz0&_&$Zf(ucGptc!V~}Qu?V=8o+_iEhu0W zB;;OaZAXpY(q)|FL75c$)*qK4xjHjy0q8+l+e>!6PiAH9xZCPYb@e!*9A(mT7xG5Ly!WX9j~;Is?^AsB>Lx(7 zAB#Q2M+XD|noMGH>L6M0sB5F+`4zoo68RK`ci!I*F3!9N$ffdEN{n;j#tLiKx}4c58wz{5gHqGTmY;SIgK{I3S0GDi=ft*nIT2p?Bu^e4lyW z)T#5VN8^IWjE0~#H{Tu`J5B(>uq*Wc;;s`RRJH`oBqEL*KfZl&p+WjnhiNNsiAIwp zpaoq)%hWWCmSr1yHb~t2NWnrwJa{O%K;UABlzr$2$?fAK$u~IItP3IiSnj!gla48_b=`o{Ap7X2fiNrf4 z8Z^7$VL+7Kx_1Xk2UHGmnx8gs$dKv9fTXN6yP`fF=uzNi&`)gp1HgwU=5&Qt)61)P zXt*1NpWRjh-!_28uswx)Zn-swL#!SUPjR(VIJcnyS9wxe8tq`v!F5vg^J@>j_Wi#Q z@~~(k^=;oIg|1Z_UXhrXKtUP-k~NYJrSFr&=zED{pZhM_rWOYkGcL4QW;)J zF?f&=2WYG8$5V(w$8mOcs?c9yoO97fbHN4z%wdE-+c&Kuz$hpoSlo%H<_K9AP564I z^Ah2pvqu;jwnfC=z)gr$AZ^O4TeX1(6S4*>TU`;Tk@d}`mJ;LK8eJa(nmfC=1OfA= zxK3YOd_W$KGL&j;E~BVJSAFQlX%*uLOe@&FxA<7?<>OO82eNI~t}r@*{p4QA+u+E^ zwj|9{==Kn4SFm&dYgY+9bD@39s~5MYY8JdG^-;$X1Nu6Ed%7`Eub|cLXuc5$U31hZ zbuuC`8#Z+VhXaOS3W$Ny@260L(3k)j_6z2ZY~Q}UUaa+w-Mf>>KbAH&8--@z`-jwY z!-ufZ;kf7Tr-GFv4ifmYm{Sp1pDQz3g1({3Z+VSBTt zx{9%MXZr!MgMM-Uq#VsYLfB@#di5erGhNY4xdO-tHH*Yg3#T>~*(u1tS7>~;Y#E2M zZTXuwz4ay;bohL_hmb#E`-16Di+z6eiX5Pggc`e#H%JKKT z?rJRRR8B)KMbO+ui^A#f=fcnM!Pjr!E}*v+?~04Blz5u#XZ*BsqKwF5C@0$znz*~A z8^wsw2oicQS_-VJba{GVRa=mQacFV$zkFuDt^QJ@Om(3DYG9Fynxj6!I3NRo8FbGKXF%uc-;)452fs0Hk>R{%94A z0GlF@fq(sHwKwkEX@e4)R(dR9N+=Pcqg8N%Qd_xlrR*~%#yF{;s?yoSQ0bo_ImE+Y z@?ZuLEk^Z-G-5Y1Hg)97dGC4afiRtWO?E&s%e*{4m^7eXTeW+F-JHoa$z z=@hbF&JQrdJZ3-@6cv?S&HTW>iD(s7RY{fMLc~flNWTA6Q>?`~-VblV`5VVr2fW9e za^8H&*`?~BmCYnk=ri1XeN+|ywgsF2*6tybqQ;#e>kDnBrFIZ&D^w?>LrtWpd}AV3 zqs=F-!peL8ya&?(YQ1JcdtT$6_KYt?l~kfstHTu4;lnMUP7#OZp}%Ai0%KxgZXVC) zCFK_s?B`fEX4x_c0Ljrqj51=n8%QCspAFN1UKO3z6n;13$#@g4ZpCrf?ayt2dWlhh zC*cEWvJjlqJi9RDlA#-7BeC9a3__$CZ#ZWYf^#vkJ`_e@os$}j+5vLD->G8@{)_gH zH@CaJWq7BERT1ZJ|9mlcmVH`S+)59nv$sLba!d?-iJL2l(s2$NzU$W z4<3!=2y7%WSog~Q1gxoH*SoEL3>_e@A>dGf9Ye;_x;bGMqjBPbv%1(LTODE zs3$u%BQE2Me=hzLo-TgJI~#eq+gd%R8E!1B5m-m4PVgVe16KDK@(3 zi^%yEA3n&heaY1x8j_XyXuGYPPsKaoWCvbmNX?d;hIi>E+I8=~1zpDDBhPmA8ac8% zX0b%_Cyspv=;+8(fsC=Wz315H^au|1hB5oiuoFp*i`l+?BY4`y`_7?A8Yty;qel8Q zv=jG`$#251$_pD#jOZT4g{#FKo2-XyJm_(zK&1F4EpW~sO@MBAa!}O4Oav;RM*wl3 zR<^{}Rz+kgz!Z+|rvULSfa{GA-3|0CRYmgW@A;wyttd$K%Z$4x712MjeHts-==YKc&T>Jo-+JTV2IV8UCBgOXjMf+OW>NzjXUka z=M;od1<(vf@Jd9s&jKerXuDuy*4@>uh4M}OYigm7w>A@4PTI>RRRd_XMYk!WYY!Ki z#Cq{#hrBI>3?0YrnbRlgOD~X5jbX#O(2WInb`=6H$(b2#q1iEfEjyj)9*CNKQJMPi zl?LGXx>0WK?jlN4MN#hVSP$x$6Zf8b5jyhdC*M0xjG{u~wKCY2J$2OcLCA(K^Lm`; z&;NE}_K$r%hYS&aP-yoN=8_T>pDX@*2>phh8X{eFWWZN+;2%p{3yBzY2nw->ShEjv`1U1y1{k zYEq<+{A<@1jc8d*vBr-+b>_@QLMiFMasLvq2&5)Q&&-%LYgX;(6Gyo?+??#S-8%WE z5ekykYt~#wOqKT;q2c~1bM*W5TcuLKW?Jbb4~aI{KdIbd9GGeq!X&xCRf88*b8NfZcA98q#a3)v2Lj%u z?eGo}c zx@B+orKR!bjK;^L84enx2CuW!e-B&MV&THKi$+aAm4jQ=pqb6vWG^1CcH7(Y;ZZdx zbo~+WAyEKm#Sx{Y-8TO_O!h!F-#J@`?m?5bLDr1Oq#bhuYyQ2XdZ?+56XPv^$FpcX zi6UbmPO?RuwCojA43H_8Id9&)6pCi9I$gwN>pG}!`1My{bcCY&;kO~0nnBWJgw4ku z2xC`8i8+})@j@LTO?Gk7q=) zsRif^gnOOS-BY0Rg44ip1yu~w)^`- zL{aEi4Tr8G=!j|FVRQn9I8Di5VH{04Zq9POI+;Wr^!~-AImwM2sfBbvG8$CWXxI|r z3n!Cd#J$97kG?X%$5LB5I_{>9)qe&Nj z=@FFBcMIu|jsTtt-K9iHI)#RTdUt}_@dhb^P44d=Ud?p#a}dL%J1FeHRHGoD_z z(TH8bqiAbtf`W)E9m8(p02a>I{>`$Po1;!P%xR^os|)%gY|HsCRITIDvAy&*;RsCB z+EEJunLGm>e9u4-3`|>-qqG>zd@tKwjgB{^E~WWF>U)-AjZEt zQ4~*oCuU2r;}xnoCeNcUod9G!%(K+~N&EhM?zCRi~u1_#VwAPv(Z(5I+K{Kp-X z^Y@-VcUruGaaC7Lo$r{SA3sP}=nywEbv{a1ox6jhyBWF2fi3Thj@JD49t(>8432^l zi%FJ(GY|s@jvebmDmLM`EF9QHHj%~@#OW^myjA_yEnD1>tucUi#5Sd-s_F_p49h5d z{J0c5JoR)gOZ|j-^-m^l&d#~)q`h1U6a9f^u#rbjdAP7(7=~3TC7*({xm1~&?IsXj z=x-d>lK4=rQ}2~VOA&YC#EDtltm!d)MNPZkjg9$6kwWXP8 zdeP%y4W}GwI45Thoks`%vuI-&yv|>=i^*cCm4ZS!5d}J{_o1(Kb>%=~+UqhG+~0)S zzug}v&}iPZn6;$Shyg~g{MxEboB4PFzHGz-eQW0dn>uvpAZNB})v6}y!daXGmg6p9 zw#&(5H2(a$b!oFf)QxO48UwzvhRi9v+gm9rRQEIsGqeQ zCBOa_p@>(~ZNU6imta7O)sbt=cXtneLt$YlExvb9G2UQ?kmSc<%OIBvv|`mOxXYGJ zG(`sz61qcmJR!I;VqFhEr6Yw-W(MC3(c{95nVBBNK@>dI*ngQZPIJ^wzlko(rIbT^ z@A~x+L?hjZ$&@)0Xoc;M*>CBx#ll@>dK4yWn>KC?i8%@K<_(gO4QZ>UB#$>;;_^HA znJAd;ky|McVh8Re9=z~D2+}tl_ggzg6KG_G6Gh*>7hG?s$VP?ufx4kB7-(cPm%7RX z7`nN<{1n7zNyV1tVTd87B-<93mhQr8yqsKEQ(39`Z8u3!ZN_6FE)P+Jm@karkG}>H|P)a9p2@&^!OrNNsKN@n3phr!HOK;bBR~c8A$@Ji|t!IPD$w zhB&2q|Agb&trFGYBJL7CI}6kK27}&uW8REycO4mV%4EGxs;c>5lW7<=5Dw3rI#tdX zx%T7PsrL7gm_k^ah|gzwsVFx$5RGp{XsGgiD82;!*f93vz<~pag+tDImR$w(m34M@ zPTXN%GZt+Zv$nztg~=KH9A|yKE~r(~0mk?cV4VT1$Sr{!qdp~)9kxj7oq0$591!lO zf*WkGEV9m43=n{{9(W9lUW?mvuvEg7!3l@7AjA%p6F6b^s*YRhWcQc1Y`g!&!i-&% zdIv;Zq$^EHys)f7cACDL=i|-&rr4%<%$<9gvmdsuw5;qtP;=ui zFz9xLnQ3Vi3_%X%HmkL(SBF#{Gh4Ybv!pE?X#?Fw8Ui%Fe&x_v4jy98mR~nmcuuW7Si!)$2zc+&jI$zIx{b% z{Tdy^X1QFNbNrMXdm+d(KeGN9j4N!;sxKddNsa4YNs1Wr!jEAfFu;a+uK>p0YQwE7R|#>xz}`~)EWkZogvb#La$y=9_O#dC~#0p!J9keRS=2jq+;a^yyB zJaS%Jm%1!j((l>RrydOVEA`6Dzz(vtjB1}KMTI=8%f26KYx|tblm%n5JN7VwV(-UH zjYW8FzicEd&2)5}np7MTb6WhwVajowV=c*OVSfw}K;RxM%!u}l*|qB?2*7r|C`I&y z;f$NB>|S;W==uhLVevYq>Zi0*)-#Aw9CMeUQSCLTt#(TdOoOV`Ml#pgn(Ov7+mxZb z=RN#fUUjv#Y&n;#>%6h<6Sd8ic?ucS316ed)xU=}Y#5uiuES=HD4@yBH&LI3Uc8tw6l>8++TE;L6$wzHHF-zvybT-6!l_v{dwYwZJ_cN)%=${C$EFC$+c zyT2~ng{&F9Qd1)$S^nBtYGJ-?jd?gFY;kUGVu_ydXpO0Qs!wqoddZ+rCz(3#JJGP3 z@8(8m2tCBai%h8B$Tn&baiSE|yQAutHhGU3w}p=k^;pr=xMqrtG72y`nL0L8Y(syn zKxFk|%^p!y6K_HT|A}U%GwSKQ=rfs_kKSl8r2@2XOvB;0*ksIZ;bQ2q+{;UOpAk%8 z$M@X7v7a;ygkl*D2caSDC?d4ge5XzDDV%b&b#&&^Y~z6y*KN14o08RsG| zyp1tqM-@l%r;G$=A=N)#0d+nGu3D#7X2HNNw-Sb*9XPFTG_b~-2R#8Q1Q^Or#?VyT z>JNd(sx$)R9~BzKRV&caBPHo)X7)AZDuB?`WwV**js&>o)&g_yrC^=?VWiWiPj1Va zkfJJI08gxk54f}Bq`Z}ljhuvOn_c?KY2?dxYHGo7ld6vMX{(q+^(xPm3H9elW}&Bj zxvS|h?#tKcMhgM}Kh9<){-)9f$le=pt0Q%J+Fd2pB~vlU8OPsl&eSM6%?bC~bQ!3? zyDwpwrE6-}hYU5~zHa4y&2DbO*`V4kBm@jfno*d?9ekGQ*_D6TZ<}ImaFSA1T=JJc zm>vWM2-AZm$*P;FUnkxe4qR=8b*NPt83fNzd0^~EGkg~|HU3C`ZthAzi_Un5Vp9(J zfYzM9Wc6n&!h1aRWg#G)dCwQE@33EKNmp*6$*1hv!>r8{C^GvAuRYMT)+8(im!%f)h%mIar?ex{ee9(<^9KL=lXAj^k^K0jy=ILg=ruIa5)J9qc0W7YGj}9O& z1p`^@&XpC#1Ii>M++D-qC{VO(~)z}`JPXR6?fxxTyQhRC#v<$ja_U=TA z;hdfyd1cISYe5ka1%mRquI8f2 z-IJ{#J8^-$G4>AK9jS^XiIG=HPy#X%E=9>PnUq|UQ|z#7+?r1vd195jKFCsr8-KAyNErTvJHJ5cKG^*)F8x9-cAe5$s|=e*r0%32UC#>|@4jqxj=pZ0U1 z#1(LmAWG*{c>;CCKF;B((dh#i zabbC}E#E$CqT1ul4;Kys1_K7v4@-30kCA=N^NYg~j)^gC7pBR@KXO0F@tBoFHojC1 z<5(C`M-oXYQQ`L=Fkr*6V~bMc(&>3?OPFVyLS7~i3VOBR(e(Y36LAE9dn;0&dQ;Pn z$=bIi=pXV;8RgnQ6UK!xZx?IK19Lsw?$03H{}|4y_aXn*ji>ScM4krGYB zP+)fgxucA!L!D9q7_)5IvLa=rmiO`2^%&UYQ|ILj@<~7DIfLdD#P=6`7iQ5fJBzDZ z1UW{vC#;E$Fd*le3whQj`RF{19RmG6o$e2oEzIfYS~N<5hE|+Nse9K!?n!JsNT%_VG|mi^Q*~Ue{%b{KBhFB1l}=YW9uPeHmO&_igUYo7RmoC?~?{nd2|a zVZ%s)Fuxb_&#U14R4JR4Cmv0x*n?rOp;fBfG{Ypu9l~l z6JiKfd$^?wCp-CQQr+;RGgEw){(9Q)&2z3Q)EqwCaq-mZ**Skfh6tMiElO{-p#DEf zPt9${xj*#%1y7^%dhydNWhjv#Y8!xGBLHRZ?-LsKxRcj(4k2&u8+dR0wBPN8P0aqu z|7-@hAvHJ>!+2Xwqf?>J9v zAqbpaDpRA#zfiVs{5Cl}S5P*}b6+fvFgebz{(CQlZ7$%fR|wJ|!AXPuETEbD#Eot|V^;(R1-LW?a${NxTEGXP9>wFC(maK`$q3(X zt!P`W;_U#{YQ%MqY_s|;e)>n-{&rN@cOd?i)9`Ocjax7K_o z9HO_#<5m`78Y{#DB5$+AUk@$iUUJMnf~f8G4D(SE;xI`_nTOp~@vo`vXx8+)8f*eb z0+nBry}nM3J|HR; z(wWr_bv@Cd!AXUHZN7Vcu`9AegS4%=wck=c&cw%F3;%(LcRzK724rSxzxwCD%c@TO zXSdw=8+Pz5X(p}J?Z*NtC@JMJ4QN;jcH1BGGwShjBpqVd11H&dl^0I&vEazavXup| z1q2mlgXl@iz$v?veykEJ)n~f;^X6o5NRtZ6$hErG)YUB{t1k(sEN+Qcja}0e?Zv!b zNdwOlj=W(^J3YT$GuqAFas)Apj6_aoTmE&JyUvdp$_o3m5=@p`ymqi!RJ(l>WBtO1 zfy`b&EF7JFT`|X0edD0mjg$Jm*c5i6c6U1Npj=TCx-Sas--UTpG0h{+^}1fkk>m(| zPZ+J3HM#o>oe0ea@&zTSU~k)(-#hzPzTB;}NG-VN@W#7Ya%tyJeI&d9cr}iyi~$Xh ze)|ta8On|cij17JQ_CnOI(iv>moQYJs*F}h%-c766nl{hy#eM|=H=P-Jmoyv4qEKf@KEE69IAN zkAR63vlmRfb2HNf)o0SP+OAmUfQx<_;7czrjFR|n3|)`ILk+q2l*MbfxTS|ApsNCo zTE4ptT@TS*=tnT~v8o652p!Gn5eauQ@RZeoV@kgqR2lM=li2mvuS?L|(H!3nuoDd$ z69Z%T!)Q))t`SO?K}}Ng{-*{TGPc8Y*XLd4woVLce-04v3hRW`NP?@(N6Pbv9wWO5 zrW^EFM$#7E$s(^KYTSqzhf0-ppc!KdwzFEa3e0+BQ(;v_tztxtt}^PY5$;sn)dLIL zpWCCGg}9(B-^yhMU*$6Oq#%Na47;S)yiKt5%8Wvs1i&YS}54eOfc_p5%G}v)hf79%E^X%5&Er z*oVo680tr3)ANu&ih9Nb6*6Ydu9SVhw2&(ant@IdWv8TH|AnZzKS{y%^;EkH-19n` z-pz|aQLok)^TM~b#NN!&yF1r5gu^=_^f@+5E}hUC`uzuA`oM3XTU>ygQa(>P_K=}V zeMT9{(89*a%YX2C1olLe@O>j|ujJ*)3i6yyjC*rGlU_EZ!9K+sy^fR*YF;nDnQkC# z(HWT^i#}XTZCFQDOn){_^`rGzMq#ls)A>V_A(E5;H(tNm;FkjISUc=!l{qM^9BVIR4wb$yW-#lynf3*Pp z{z?CKpA?yYTW{k;E8aNvd7EIx5_}!ATB~kum)eV=>u_9dG|?;`hnns_nY#;)JDzO= z{}8ih6ce>prC~I&!tq(ee;}HCBU5IKAS3l3Zc@nWH4sWU+C86D8aH>wsj??e=CZ?u z@O<^{^^LUwNNe>}!&FY5gfoEM%+DzTGL(MoI|;h0z#?nGpz7S!xqOX`Vrkkr$M^e* ztX%)m0bjm;M6P|Mq@)uyd#u6L0ICxvqdPKmrvG)*i0W|!>bkcN`yh@8tDJ=%kun*m z=|4x|kH(+It2>SVJSJ@(f;q&kfxEx;mTbtOvG3BUlK_9wbd+NT2d@Us! zrrv0W$NeIYDF%{~)jR=2H6_5f0o2=PXt8CTF@H_*bArNzSWyV1Z(NLDFY$09(^ImE zWA>NB2;w@ZYjXDm)3C_4dZ)d9`Ldma*|S0EM$b1RM~txk@)|Qh9jV8N)stU4`~~-U zaP1rL%sHR$43{&5h7>3zcu*3PAAHc4SH(1RvWeW+mfwUJMnxj^&p8mO{R79ic9KAq zAf7NVg0PCAlak8?#*iF2;R%?f(~c3~GN*;Vgjn6ptrK{2x!J9VVY6B7Km z=4Olpn7YfOj7i0bHa0*zf}WyCjZz98bG(-5VSRiNB#R6Lek?Cd%c@PM{(;i!kIzRY zd;vi|&ee1c-w~fE1_EhlSpi$!1HA&loqc{q1-AP66uU^KY*Xz&^QQ`aYMnX9!+VjV z1c=*AR`$qbJ%MO@-9poNm>192{IWWcf;^P_1g~IFGm3zC<_g`4?W(-II{bdyI=D1yo3IWVA zXPpHex(OWqYPS6oIC3Zh*2}5>sot$Co7*Y|e$4*d2K4d?9ukDi-TXAUT%LHs)gPp^ zdm!x`0=T$Wpz0R6eB%efcK*46(;qwiB#b6IC{9+iU!UpI~wWRzE1dIai9aM7|Vw!gH_e`}XP zVE|n7i9`y4;Dmaa2I~>1wwK^bb-n@2g?MJweLh15lFOw?@&;FXCk%>Ox9+T>GKOqN z_L=r>A4g=ra9xJq<@-5ZT9@FuZXeYoVEJ6iN3kpZh2@2UK^t&JA&_Qi*t(@JauTEl z{G`GLGfu^dg$D!(ABbGu$=f}KU#3)?6*6fO@a#{k!Vpk(@77JA`+Tah1fgo}Gm(37 z#jmC{b`StNKW{4C711iNaY$poe*F-QZe#;;F{=#i9EF@nwW4YvRwLzV&Fq*6|1Mwd zV4x=ITcK%&zlhFQEVR_rS*TmCphf}K;c@^Ao&-@nkb^SjRvH0kZvcB%a`$_mhbLB| z1~r3yka>CXHIbn^qO*1=OaxSbo7h%L7d zXIHFT3V9sJC&6xSV9QpqJ1Ld&fZtpo)*~cA$9=}L%syfmz6wU-YTov# zv6S_q*5{s5WvxGZ5)z6L`g@%%;O3Q{fD}~x*C+^zne9XUo?5bY2ns0J6ckLn**L#0 zZ!0T_ z6919EvRVXv2sl7?VzO#?2QD+*=(AY>)3A7HeUWd@&fmb0)lLO^Tb)?pk22AEqH6X+8H z02(@xQc#{BYCjRf@*xa%Xc!qOBf|0^`B0>80Ls0BQv%UW_2cG~Ck+vmim#4RdDW1q z>v@EW>soHxKz-C<)K@`iiLx3@7qqK=7StWxtdUoxxgU2?@?7oip5)%EESYdRav|p* z@Q)G|JeW&Q2EvhS2gSy!(LQVj^6f-^5##r`mvDkYums-EiU<}!NEtyd#Cp<3UZY|3 zS-HAz$f-7!&@Te(5SXX{&iP?reIdXK)+;Zspx~w2s-thi=3N$L=4O6hOyePCwtBR{ z51Bm<0CmiDhqY{I_M>SZEz+~~M1V#lETAkdfAwk;OX|Y(*6Ocs)kxwSc}qf>1&pwnP$;ZNX<;fL zpF4c~MAET+Inp4c?kQ5N=y#9s;tj`!k&~Q+d?I?e!1VZdgdWW}*5G%!^g3JkY@jn) zB9@p95a#k9hNAM2p-JKpwT3$r190s7O>l3sF0NGrCZ-_E1?^@!sOR%YL>NiX$HRUL znYeZ_ew9Z4!1=g#Xl=?*~uU;P;It30#eM$Dl$a%GnCO zpKv4vUkvv=4Im(X{pq2UUUZ-v|Eu~cm1Y{mC%^yt#mee{Xx>z4o_j^;Z8(NvQmMeX zV61<1jb{c$2`vIQ%Fcx*8Fq~lpOSi|M(^G!Pglk~7*AzS+wQzzLCWcxKTr+A*1`aH zK)O@4R~wL^lzlG0+$_qRW=DHvG;b@ANmh>8cf&QhQ@bIRr1B7*kak`li4W4;9V~+pbqW0E}>(?8Hf2n=k77Afi z8aWi8iR2Ri^PxzC1a0@_eOX5#-0E5_?g9|2F76s4e`~j_>iBYBm_{E5d+ItSt)*z( z_(vgDGGVTw4Gx$mit5Rh&-bF0($LdWfRe3wacR`z#f!y6x8OOD>2biv1b;Z#`}3<= zIewkVPa9^YS^y4?Vr&|g>oOzy zV&ve$O3zkZ2e+cMiq+~!q7TTUMi%zk;sF7_mw9`SAd^oEdKJ)RhDOYfyY=w8!aWtl@YnR;9@rO?Aex*74W3=EFv6@LEu_3vy@cDJ4NbHNUPayI}#z?D1h zck9kf3utW#sWv!HYw9{~kyhZJnE-MRjvqudD1Ho1)Om#%!u3!+?queYEB$@(Q68RpA#fb&pXpobY$8Uj0$| z`zDg9OJPX|bF1Xm|fxa>{5U_!_Wrt*{BAC=;NEA zln=H|$rrNlS!TcIyaa&ybG>COnGg5XE{LD`e*C8B+4=kp+K6Q5^!sr$`xS4Ox3aD( zex2Lsb{f?RBmZv7o#{P6(W{lL1SU*JI+m1?wm?Ym0o=&wn!38QV%?|LXZG@_r9bpuHpK0iON>AcqwwZ=+;FD0&y)k1le$f z>^&iSm5ws*3zVF1%=hAdU%^Hw2x|#TElf*eA6lR0ssVFVS4NL;a-P> zBx9US$r%+CzeCxMp|9a4Dg|yI7N-9##~q>q?378nfIg$BI!WHGv;BV9x=gaP6kgq7 zTP(SC^9q!W*SiuUerW8`Z0`NJeroe_}Q}r{*pVJ5qv?k%k=pdbje;yi z6bvKfhXFBAH}LhW?+x}S3Is88A$u)6n zj*-e*79rJWT*Z^}5S5?kW78o6Tylsn?;f92M`m0wP|THP%vofXaaDh}se5n1~)W9GD@s!JXz#CB9dK6=?#rJk~)jpTWnSb~2SjUG8Gj>Em zD^R7*Sv(SK0^udQPdje*vRS~smB1l7?;ispVJi3fNd#RUjx-2n4@)V6_T|5X7^*lh5Gpc)uh&>?4#z z$9#_dLUKR=GjLFs)-vc4(m6~|p$}!2fg%!NH-|CfvXFHI3V| zco^A4>*NFW$Esn`3#v$|utEtA%(0Dz_XK92Vw-7y%#AIyBQCC2>FMP|PBFh>8i4Ub2;rQ|&xJUyzV)?5GZIQCj zdt1D_AORAZ&|}^3xr5~ESGiClro9D_(4O%4TDT^yCqS1=*`tLSLYf%KWa!=KwLr2E z8g`X0gnF6p(tGM5%X(8rd699xK_*Ys{%J?3`>cCufh;0P-6; zn8mW^qSifUs2I1C_78)6FtMihl7F__)7YxVh#jbhC#Ly`+L`5MTd=bW5hEdy-%6n1 z5w_WEBpXeV7DJ{?oH+3b6^9VziX$phvpp7#I-b!yO+E2vsb7M;j4O(3?HkB&RU|^r z!I*DKI zA*gY{=Dl=uLKmRhbl_@VfsCS%Ld$!)CMjwX-9Z-hToX5=fbnQZyy2vhwT;LI1fnT} zP%n;=(khS)%U6?fc~ih_057v>Vs`9CeAn>yfH5_oTreMS(i&fEo0axy10tAu*N_(fJC?7wTDzPcT<+iE}J)cL8up zLxISRA{h@yEPNk5wD1rnji2L;dR30(z91ukvK2HD+5}3;u8h;>vTYlN9RO>YuG}Gf z$nhtgFwDdR6}&gh@VG}>hK7;UMgq8(S%!V;0lj_j68|(%TNV(NfNuXR{9#iwf_d|Cj zc36`0P|((fTotv;wKmjK|KKVr1}zB6`KC^jqu!yFlQ~754Ia`Dt=?^sFXoN6l6?Y7 zm+wb{DXctQW}b?vbfg>M{(O<^wTp7+T)X8DIt5|W$Y-4d%ltR^!8HQZbQwY5$5%j z=}$n>eGi?K|BbQvD<^Y)hSA9;ZQk5MMvUCJlu{4fV;%!TRbaD5u2#n(!WnUFX-Ua; zYmH;GFAU}tzbP*l!1{77d~%tyeATMM`18ZJ++yE&LG`XJ^I&}#ndOLK{dKG%D23!H zt^nNmB2tFiTYn;LrOufLLB501>X7M)NGiK@!jN1pg{d()ks4FmN^D}OrlR7qa7@9} ztwSMJ-N~!Bi0TC}Ta3BD{J7>cOh0Ddmwy5y+77Vm%tokvkTO;hP4YQVrRZH;GAw@G z`tvXMT;cf{t69CYQLF0$DJw_-m2EGBjmj4Nxcm*^L)Mu`Gk2VVXqoY}Io?f-|E!S9 zq`zw~ag?SX|3l8MY-`g~$x2MZ$|X+MSdRWSJL3|<&rZK>quAy#Qp4pI>Z-Nlt>`1} z!#*&Que0;d;4-E?h}*iQ7VWMxM5-Ngo?4mFha!fo&fHEI9xn|=Xld1hA&dAUFrX!wcp0`wA>k`=ka0ZlRe()O#Fn zbg013X`Rxhp7M`T)%pTBa@WOQKa}5A3DjOVF{Jzr7u5Xo6UkV(=A_XZn@qq$X>lR5u7oDi9IvbzZE2*v>IQz;!Gl+tn;#Er(QPl zGazfGCfgeI>Sb{zlC-P(5sp-lcCx~GRmY9`J&g*Z;OEpX8|ybVSwur@X-El{gVB^9 zdziiAP4vqh8kXER5%aQk(KC8`t5JWy{q1S20TpI+M+JfF%ZTDmvk8UlUbA%%`dQ_y z{Tc>%N1`hZeLj-HRnJ&KL3Zci!-w_O#khT}8iz|jE}v_)SRj8)5&dbXY8(2SC9u;| zWdNq5CkPAnCG1}vOp)(|gebuLo?=ua+T#G+u5#e>kh|$oI2@sIX)T`u}-s+ z=1ltreeecJ6yFKifVrJ_@BkeFZM(lzh3PH;g><5Ble znboNMb)8Q50xo=L%>F2w2Ry2xnY*`L2RWI8%jC8%^KTh&Q(wVVUVf|$<6~qAFBe-h zq2iX~Jjc<Y zdL$n#t*6tjO|Vq8*k{(uW~)-B;dId=ahl<(eO#?4bcc^lQOmlYMDD#trBPO|<~s=Vw{ntA+G| zRd^ZjX~*87!yoW_-2RcdNg(voiD(zr6Uh7ENa!NRWzohUWIqh3AN+vGEn=2jCZwv& z4Z6AD7$%;n_IU~94F>~0^_Yz0QfbLeFj%r_` zKm7dw)Oftwx83;yHXF=aZ)ksA3Dw`7dk~LA*~}e2=)z19w6kRb#HpBdf~v}|XllyH z%?}>62mBl= z>ou#${5|E#GGaJE<@dBNKR`_Ws$qYSLce;9zNo1bD$@JjWBU0%N2Sk<40;*0PHUaO zz1}S2MdSc(yC``{nB4KS017E1vUd@`6~t4`aQq%yBzO_foj(D0QAy0%1Xz1mNR9G5 zZr!-CxMSv&DKav2&XUxiG?Ka3!#mD0xu*=pHj&HEQL{nNbf2_X!4)TILSw&mL*ADG zCGHTs{?uP8uFNVl(0$MZN5%ZCv)Ma{3WN3#>Kx<1i@E_X#w)?Q9@(nDZ2^QVi#PD( zk^@5cQY0|{uTVDBA+hYKKwEqJ{xp1~jzUKzcAH6*iKL?KAEg&FWyo0WVkox`ltUG< zbu`W;okz+At4JN~N?lSv8RsIsHytA>p&*_VQ-4qr%xUhOyy$*<`rVf=Q}Y_->f`)? z>Ug3EX~zZhBRaf+z77Fg6e_N1C(SJYU=ASdydXO1z;-W8&K*nHn;QzK z1=0CSvc*Nqh~C~x6P9T*?X?STFx_)|t3h;w=Q#=@7Ohj8>ncz-ua5Wybz&wu?GjIX zO8cw!?Xs4gn?PG-BD~tWEZglzydbDu=qoaK*l4&J_m}M|W7{}0tfW`lU z;pLBx_n0PiME$s?LT_AMi=Jv{$$MLYIumTu+`}HmJ(QqGsQn29r_j5_=;Q`O4IbWa z8yChaef*2*&vBN6Jo^r&iwFdnm_Y_Rqe?!cMtAn!Xc%%eB})DG$;g%V`$cqSkT@|2 zP7FLFiaYgO|JF)q=N}@?zVBvGI^e=0Llbx12NSaghE(pRpQVed;#0Tw1AAa;qLZ>X zX2Z=3o_ulRxl%Q^P&8P1bqM7VzzyOOO`!*w;`%aC9(bItV={>I|9CYWcKhkK50*Uj zd3AMLW#~`EJ!OJkmiA2=_>0@$f*^-ivPP+41$GH21fz9{Shb zNs)W~r+cJG#;Wz7e;a`7aq;`xFZZaKB-?c4NVh zf2S#Tz&7F}g_%S$T=zG86ESEnG0{o-@V_c3ANyd{{QD91&a<*Qm+kYM%tls*fif~O zC=AlE!5?Y!`UaM5=(xeq(E5{(pPV&+=+ZrVQnIJ|A|-x$I991Ih60vyJ@_NPxr+;s zmBAQzuJ06gh+>_gWCLeVPi223#~CRG!(kPCi0V%&Z-cQ%44LZE%L}AF=RA@T&_MfKW!u$n34^Rzy? ze6NqE`L{pKgOD&2#T(y$pf#Wn0+3|*H=i9^FpCcO3^|J%G6uc4y-Bd0Y>M~tNf`sr zPZm-O>e({$^{`54ySrl(o@w5EmX0h77*`JEWleDs^6Bzl0rSm&faswytS&V)&iC&pZQx4N=;cq`EUkGiI}u0gq;vHJE-}s8@1Oev zUI%X(i)V*nxKI2*Z$K3dk%$~u&HwH*t<9$QF4zPrLZ`in`5F`{-a%h;&sHDD@#TAF zJc)n1G&9{UO=!^32W#Y`72{9bgWF(mqEHVXzen!!hTh>g=fnSeC&OiJ4|X-b2vj2D zC6qwlYoeoI@Y6$ov@GomN)z4lMaO*fDTtVJMz=Qc%-v)dyLFgLTh%t?!a-v8@FC+3 z2NRk9m*5vE@sApyzrV4Ux8qAT=-%kXM?BSVr7#Y4$mz}Xs6YD2xc4{?&=|tAa7*uw zZVgu}L2E@-&N}+~U6=$$Pbt(sglwYABX?iOA{PC;DMgw1SdidvkOlykSK5oNh%)uX zdgjWp+W;!Q9Mj%3c_LN)!nSb|J}r+DB!gLaTUob1i+(LcEt zH>IF>CNkpQ5TT+504i%kcG`{4hNo5}mK-GZmz5C%RGd_mmHTiW4^q2ySZ=p@>&{J^ zXt+YDnlP=YZ=GmHIOx0YlzuiBU6M(pg@^^`A|@P;V^P3~COQ?4{|G3{_!96O8MYj6pxH9GUQWw(2PM_4) z0X_+to!T8zsq_5ag9gu0_|bXr68>kN(vc%Zs&+EE1qY8D$&6iRKEhdE!v>0@6z)x$>|K>l>YiRx6j@Q!F2m442%srBuT3sxg$AOn?xb<&%^P)mYOUu&u z($XE7w@Kk%x>v_US*P9R>j>2l!fJC1T=x#onKClHf1Y*ovdzqNCCmj^3zuCkr!X5U+nm%Gw^#1f@-1_4j~@_!zAn5FZzUD zy!&JNjDj^zFM>5et7!hZ1xmc7?6kE%gsF)w8heJa<@ZxdG1$1eL*^oA1QY4>BV8C$ z7exh7C6r?Gf^q97r+zY$N{Qg2Im=7teD8pOM*H>bpvAD{rY0u-@6$RxVl0!NDd#+V z_!QWCa$G_5!^z2)U%0a0VE|C=)z+PTzcWk#d9`#c+yE$?KeZ_|xHILW&UGb8c%b7E z(N>A&@={w2nsBS`uYUB6N$_%2yIDGz6l)oN)_`4<-&OjpDH1@M(I=|g`hIE+ovRld zO7OMP!6BBae8Y{_wvWz+(YY-MLMTl8AJvRL4@g(b_VkI1Ku{kR9$roNhCW|>Q#h|i zdg|wtMp!zZpn`TfSrJq6G|J!&9&@NJla@QCmAa=|SvqEn&*Xb8oAq+&pp|nQ^Nigq z&mW>ia**R#7uDJ`%{h;-9Gg&FEN@0|@BGrGU=vY7_J~G;v+ANPai&X`{=tZ;C``p> zmY-n1fNGR(?|(&L!Uy+zUJmrMgwpx5vv;hMw)+pz@vZ&1)A`k|ijyt3aw?vh+XjtS ze+s|z(Efwn2h`B6`knD=H6-r_w9&HKT{}au?)ZRS%RD<)-~ zVv@%3?70m~kB!k>2?Xm-4NJH3@Aw9 zkywmZ?5+Cn@z|^X{(@j>k8CUG`c+rS=Y>)GMd*&Z9>@NZ!HR6!G z`(lwY7_ZO@V@#K&`@1k%&xR$*E5;z!W?@IsUiW5kKN+trLHiHL*6B=8SAR;<9K#c@ zq++)EWpYyDd{c=1T7Wgzs^!vYe=C^tRciiF&%T1qJ)2XJNVtJDe5Cr*Pk-SoH*ZY0 z`a6O5>+The*(C{E;!>X}??!yE%$El<=Kwr>A!e|woZ7{Rs6YA3HXE6SiD6G7tW5}VCp>VA;dvXe*mES z3Wb1t-x+vN+R}53=r<+hI}vJYmiZfRWnR%rnz#7bB)xQ9eWw-VJ%-APu+L?O70*ox z&auUYp9%`HMp1L_^<3Ol-$O>7J%V|48l@7ScwGAYQH{x;(5X%GQOZ&9j2=K$=5kTb`aImB+tO< zt4q?-5|>yxIwsgd-)7lQZEc^;-0@ZTqd>>bs4yNTiCAJaV3F$d>3OIt?13gWx_+@} zu=XUDy3+7!+(X4>XG{Hq-K!$Aqukv}_9jW&J*=yFm$Y5r%B+P##cWL_d!c_rl8to<mstzbLFoASeSl6uTMhj4PQP!MY5<vLySp1tFVR4nW11M^vql8OGCNGH%EBVE@t?*-~K|id!H}K zB8E1n`4#S@n0ypImpY9r==2-hQ$>3T*y2>F6ov8wg+es@4{O3bXFMDC;m@#-adPyH zxaU>U9_)6JOmG!9E~o^vw1rGETje^jLz4J4!cI@FQv@v1^tV$vz*u6p zmEKl#yg6{_&}ti-i)_H(po$w+bD?^W=lERK$?ZwL8!3H>kPzld3wSHAo6L~GRp$qnd7e>A95;=DV*Lm9147V;Z{ zsYv>=aK84A(r~oN?WpCCG_1-yffzNEb+RLUL@*gNSKddA|4x_Ry%c>|`iq0(iXm(g znIYtV=1hd~a*aitR6{=11t%JL<%$6nAq78QE_qH^scV7lsWcusxK$z zfhbH%iX?`oSEDHvK&A*LY)AXN^2Eb&3Qg(!qaJLI%X6jxV4{wWHBHC-Sfq>O5!OCh zpU*H`DW571+iOKncFvVI1*Za`*PS>T%frxxiFS@{FftVOWsHn}+vx7Xr$iIh6j2$= z6^Y^Q(WYb}U+i_Lnk`r*F^(s1{n+U+-~+y;_A4Wf0mnZpjUT^A#J!}+rH$_S z$XvYA0>UVs`t6o$Z4_8u$gt5qVm_)c7~C$CuMveONJtellan>I0Z;M!!-fyP1PWo! z@)&W*&h086Im6+_D)AQ)sd{U)n6|WA3Aoj(eq3ky_c!;gCrzf>WMti}a9FWS+Cm7! z1Q3f8UBQ`iuZd4*+LBI1Do2+sVUo9AWWRAHrK8mJvCH_DFrtPT_C+S)=iH;XaiW=L z(5`Z+2$5NH69WS=D?_yU%!W2Nen)j9j#v@R z_h`a!8RO}_ou14xGG3i>-EF=+6-EXJ8C2sC=uEIKj;H$AEE+(qa6SF?gXZ<9`+fY^ zpJdh?t4RCzr`Mai+x+{}_8D^1{{893DA|$!d7alco<)Ek!Q8jBp*at~@Asm0NCiUwlj(0CpER@Dm5^-o3&Alb zya|Xs~C^(lTqv?JF-Kxg4j%au{k&7SKe0E z=1lIT9lU~~3NvhUBgARY@tjx5ZgEGB9__5ZzG6SOY7=i@m~!wZFs`wQaElFrx61Y& zZnI|kb{ypi6-_kmU~G&T7jbzZnvt@PJFf!nhF>Og;4~6`swHZ5Zz=U#QA&RFXhuO` zUCymH2S@Y&uF^{6t;aT^5_CLr9zZ9doE;S^1uCzhDjjmA$Cnj+%Q(X3y?^P1Q?(ss z9G=~$GqCe0-rMYb`*6<9r1{HTd)1|hwgR`vySrs(Ek!U=Fvji0dCm7X7O16udScxo zWo?rkZoQkpsp<%;J+~ODuZ5hK$qI9E!sJ0fQU;j%s|3HD+dp)C7)h1_AQAzr=J#?~ zpqNvy`)5&Nj&?NhtQoJ$CvS1_bw4K5Oryh zE@He0M`sDkjl0(E^s_cHx`5DG>8GFOb76&HLMI#z%{viPgjZwQiZG4t;*rDn0g9xW1XaTOF#?scq@3eJtp$q31Xn2js?<>H6?MI=#OVE_Dz?u^ZO zB2}F$pA-D*KAmFsLcFyQ44ESKz&O_o)G4oQXdXIpq;gzSomT^QJOf$4%FU~}|M|ATdoS_dgym#q`_Abp{t#A(#2s)|biEZH4k5NYh;u3yVw$>$ zs@VE62R#pu+v@Wl>kQ^~nSJ{-x35@WXm~+YQhvF+jsmZePigcZl; zxaIE9Oz7dAg3vIyRK7SPE zm(Wl)E3sg2h(LtLw=eLFJL2uVlAP5$**e{kTI{`q@d7=E(S*cxf<;7MM!D0>`JQz+Y+NgMjx;SUxF-s&8jdB-*v!QY6EE9X0mgn@y zbD4Z<2{URMAI&PULpUR>BcN$eLo(MDq|=xa!n`($AtqPs^ta^|A~@zZVy-z2Hcnf7 zz=5?Ot0CCdQAVji7{U`zPON3aD%o}2;&&yTdZ$~Pj&@poFk7?cGWF4R1ldcLE;Yg2 z-7N0GCE47wO+t5*a7hAk(X_k*L1X*b5byR=>f~I3k~vJsX#VJ)iUN2FWy;%fThj^g zMOH?)$5m{xRQhuJ-TvfUyDG+z2PJGcDoFrhc=0~9$?E8lBaTJhzyE$k@!ZazLIx5S zy5i4PbGnV=z@@H(bwpcSiz2A}827?-_~60oNZRA6&m)(;YG-H=L=gsg`si&bzxZB8 zfFc{`N$B;AkkhMu_{fo)NVo%Vc@HARAZ$MyYHzLqGz2I-%+7YTvc7$~@K(Tov;cc< zatM1|rNh4skz9Rn(S2~XS>T$=J!1B2+c{wP$&O$WTITl4;h%)8diQ_L_lERRw^6g!GuaSHHG?UPg76i zNRNiXAnDSy-+$mhA$X8If#C)RJ=BZ29t}xbHhw076Ak3=R8vcKgjDHiRsu84+cwG84j(b1*woB&*!DOYYMz*6mGWFcxTuLY3iiF+{UH_j?twl7Df+k6prZ0G)DuC`A`uj2_I)7AG6W>S zN!twu5m?V@GDrU?01=0qWy4!>(KS41;=kAy3g{rU;tsFNr10e*cd9BXrqhRU{l@eG zLMRb~*_=rk#Of<+e|-t~LHpy4B#h+y!^6j#S-PAYGXK$;siG^`MgjC-tH7yVI6kz# z6-U*Ys)j}(2?WVlOIW$#gO2|(YDT64b^pKBkVjwRz~5uU>{?vT zspH4jlJz)OO;A)^4c>Jbhj!}h+06n0ZzpuzxY3o(Jge|9BO{(rINNGh*)YW~WV?NP z$9R7Rbt^hH>y@1^VtOl9e0oI-4d@Rh>IConr_XM}@2!wQ0wf~iajXJLH%H1dZ@Zz1 zi4AsrLI#s*8EPT!U*o%{=?aAe47CJ*4icCRCu0Nib-p%J6lc*M}}>Pxp9NmezbeoLK=LH6bpQy z0UBk)ObYz;mo1wi`HcQ{Y=b(<&Q^J!bTZ8WZdKu7Vdi-Jz%A`;46xXG zB2@v^iruYwwtCw&1VbUa`-x2E&WGL)>cX45C6L^&hL~w^Dt+J=nwI;e#MnZntW)lv zft%W7rOrF2=bi8#c3hIcva5%@A7-}Z7vGwj73b8|6Twk6tu5fogWQStvro4U`Sv*B zi&Sd9a^)%D8|Aeo`M8p8zBLC&J6yrn_UK`QgBsBCWb;Nrp&~vuymNZ9=S~`rZkT8m z`%Od%9uOcpdvV`168y&k;HO)ar(J8?FV7yo(L)iiE7gj_t(Az}LFyGGlM%X8gqp3{(Ut8dL;{nVUqdj&`*S>DQ1Fb~$=yKmo=PNg6L zK4sZAbK#cx4w(}mtu0JU7brFv+I0cf=LKULB!~2zTSP!63=Ed&GXcqS`YE5ZDDQR>-ive}fjRViRr%*_svu@)?IE!aUOrNiAC@zzB_sK;!ebsS8r3#609O59C|AbWa*(%~I)P z$V)EyoJNk~3}Df|d$WUg{1*U-Y}hpub2U-IB$UMl?ZnloG}R!q&5H~_H>yrV0z@TI zByA!2Q_&>HBDkzTZ=F<)6*l0j(S&=L!7L38Opmz*vOGjzE-#9w!}CJLt`t{AspRS= zKLT!&A?FwN9r@yXOP&xEk2QD?h={Sz%=$!A2-Ap|hHOo>*G(iFlD^s=9rbMSGSE(I zUk-?)t;38o9Qiz)vTj8h-~me4z~;~1FHRv!?)hjnU7?gDQFYh9e+Mx5444&waYT*>5$lc!OXnza-`CF_M6Su^d;))3p zAS$UC%HIF`*&>(j8&OPOYG9C_Tb(v-%sDqn{i&eHw+CJ<@kxJdPwu@2Fm1`a!pBWf zTxu)gbdkXi8#3f=UPJSqQCjZK(!DA<_DL@<2?E5vfitQQnKx`76&^#b>?N0qLj3r& zgkgw+3k7I>OsLxJRWa2gaK@dH+GhJb9XpA0zaqEB9%PYQu-$WDAiR^80dkT{ZUWMf zE#prYq4QVJXu3g^CwYQeUT)=f2ZBa{ZWE#;X64L*bOR`RozlbvhSQuiosN$KMH*m! zJiRyio%%coP%M_IZX zH9F9~Ejsn2NC1rbmTSh*EFt10M%e+}E`W6ZCCd^Rwx)B~AGzGwE zF@znFgxMnZr93B(=G8&)i)E9$=YrP0+>t)UBEjY`75=dl+D7321uyX_DXo1Of(AoG zU5%`q3fKdIAG(Q~_2k`~NuqRXTlU=6ab5x5w7r|$w7~7;uL2#6B&J-Bky;7%??Rlp z{-9dNpf{Cu|E#iJqCaHhNOOlEvh>A9k=7TWx<<9vE?WF5; z7;fI{`Fcl6Yi;ET)ehIT=<8!9!42^*J!xuZ36a59YKNo5Fefuw1;b8-@KN25`D&O8 zU;}oemc~Yv*Z6^0NFSK!vcYOVCY5U`DJSPW)I0?jtI{-EzL4qYw};&M9&2tDc5p%2 z$E4K;1_o6cPiU1KGOTB+Ra~MDrns{%DokR@P&2z#EUKY5rzwZ?4J_&U9)@q6QiORHoe*%Colzp91)~i7~HWuhl%JfKX;W{ zO5HxeUP+~qnDKYpJX-@qsGADhw%igjgY-d&IK{nu*Kv4?*ANC6red(GPCUb z8&1$SB@Q!D4RmZEu(`>W@L4}c0_ZYP;h4A&k|$Unp?1}%xY+qU&D~WS=e~a)|JJkg z!)PKp&vA0o+VsApg^0cmkT{6^$b5|>UAX^>k)KWs^BmuK`Vn|a6h~1uPGk&rYRecbcEfudfZ;_S%cofn5?vIY*kbInq6fl`CLD& zc#Pol`|MiMZ`<-y^y@4uE8E0qM$b8GzJ#`o`;#1F=+OIPW^bQIaA8QL@6B3f4@!JR z9w(4Owd&x`@5SwMCS5YC)DlcA*FOqYRWyMR!X`XT`5$>LY1wIyn01zG>GrZQyyyn` zLmnV&+U0E>4I9`_-OvHl7ZvEdaDXEh))uG5ekr_uoKBSWdSFs@$-wkc2R_@j>`{eB z8=ykokPCJ)ecip@812Pi7U$*ND}U5Nt#XSGmy>Ue`<+m#`oIXQTq5aMe(u#hj%K)q z279rLT>VIdg}xUlcV8)Lj|G{9E8R@_M0%Sl+l^9yAs35UDDS+Aybj^0zOUdS02+uM z8&7(mrSOXE+t%6vAovWg>#?R773OQ#EZu`cVnGjKMFJHfiK=`r5)Rs7np>LEI>(rJ z@~OT9a$22!YEHA0*DCP))VgM^Vi5`>q0)jiS|Q$fcKW7&{xH$7Ag%`s1X?$$WlBqB zBPDGa)r~zLO?17A+))&+@SRSmAIZ+i5|j}Fh1uhtc&7s$4MUGALW;HB^U#m`B*zR1 zgE*a*XjJiL*QdvNCj$d({>Ywf*!Cuatm-$b-JBhhHEU}2jGU}bh3WV)@{1g=qHU9q zfSd)|-q94t+tatYai+i``i{=zPVA1 zH^Tc0ORxLOb2zfV=0xw)I=R{{9ilE^GuByl0~XLZcHq11uk*kYNE?lP<;urLN8o^r ze7^=k``2&01ZdekFO}8cTVIB&D^wN(Ox~w7EGMfpt!!v*tPY1&6`_zZv==1#Pw%$R za|IQ6=~`^>J9NsNq{~j*u_d%9iI2VU&yl_kQvqX=2OWQ-)_{~*IE?{ccEPOV;}k@+ zwM1Y4Dfz!bMsu$g)PG`5-)#F7OGpO=R<-rZVggCp=J}2GVyE0HN;_d9O6;4 zw};TC&AQwc6@Hbk{^Z9T7r^z|w$rLX1TA;hUb6s|6U0&0;|2nPi8KbG)1{KzZY)^1 z7(Tkzs7ipnU+Ugu+qMmBbDBP;x$J30gECW&um*kHUsMS#*(pLNqT%nRRFz_RoXf{+ z)*o#=Ec)G&dRGB;=6%iZwlOpUBFD_m&hEejYvyVl6*@C?Gk;2rSIn9Frj3IW%Q1_f z=yJn#kdhzY)kVmADxLN73#Bl+3XHBmUoEvXkAa1Wf>Fl^W=l&`xM)0eF1OVMs8Prz zL{_%>+2zRO_qQhg@Qrfq4VGzHd1p}P+ns%EYouxi$%?$&PvZEJuX0|+i`>~QVk!VMpp}rOIX&hcV zQlp|Y&(0l5${8caYXBux6upE2AUYoYX|W^HD=}`u_Q!r{l%wk#&HJG;SSKdsfTS(d ziQ{Yh&GA}JS48go9{A9c1=abWCvmtp zjegT%>lT4q3yukhcj%NH8^~+X3JVkS4zsyElej8M&|@&_Z+EB})IAvIqeO;fw?j?< zks6Ad8ke>WyveOvW+bK0$)|XXSFe;0x2j{+CBs1k=$RD{iYHZwwo1Jfvnu|t$R_T} z8HLe8S7KZ8e*yl;*n8y%Y3;r)Ne~dAvcOhEq2q)M8c3@G5rYKRBIcYS;Zi1PxX==H zPnL&?2{#thqKCi0qYGDv>0!pV?Tcsn+3)~6GHJi|uKmQD0 z#c7$ZR$JX&-FC*sdohf%_^a-al6TkPqepM?6;LUk5qN9tp1NNp353n3llMaOTp+d; zLN@9+^d*w1Ks6{1;*k(ZkwM|%PZo*-7Xe$x5G0q;m%MjB{SitA^CxBF#YGvMwP z-`+pA!(5Uj28H8nJAS1ITuAA3ezu?1_! zw>awUeVq;+r;{haZ?R!B{A|cGKl4CRsQ{ucQ;#+w1L@Ni>SzQs40-{c`8uVOcy^{l z$P!uq<;@5vmiqEjA-C~SRt;gOi}z}rM9?kZ*$EjKATtL~pHiK4sz-dx({W>K7IDQ_%qXcj8abDkZ$ z!e8OT0Xq;->e|ocGET_AnV0$t$OmO$(3Yv=$Nx<#cn1tn(}mMH+0TZEV`5Soo=jb` zl51c6JU%o(*0PvmCNLB6r(khi^G(fIfUwh6qnv~5#aao}qd7Gq;sI#P^l^@stdNLDgQZ3~)8xSW9Ww|%|@ zFo*hIlEKBplW2CSufX}0M{BuXl_XHNvN9rvtfVt$Pg2J$t!}?{`q7d8GEreAdcb}y zBbgv3oaixmtvPlVXyCs)n(UV$!vcXAO8g-p3&cy`obkkK+%uQ0sqB+Z4_E&aC*CX_ z^}eCm1dSHoYNFkRW}q^m+9B04BgwmXcbuGnZUoB;pp}b`FOsBhA`1K!T8;jK%IDrm z4pkV^GQpVD^4aZZn?|q@O;jfv{g_iIIA1ha26rw#>aeGsi;oDY{DXGCzbV)w;b`&r zP{I13PDPuaRFFDDg~kyJ`}2P>RR3XNUnrR zj8v%4nd(c^Nr_FNSvG7G+_t;>E%`llx(u&10#L+B8nf3A_k1%QwGcVuAvmawTMa(5|~e_l4$RHU0^9-4GK2 zG7zpOziVN5kgLU=3Tls{IeKB*9&~Ir4uT7*Z{EWo-mm@?>s(D;c3iH~N!S3yq1N1L zGzXzPL?}1`podDPEtc2yM4s^;sAr%5f-tk1Ivw4N(j=zTqJsRSu zpvR#?hnD7-6fSthJBd&9WzOYk2N;M!H3s@#R` zVg>V~PvdoKx0VQmf%;wM3C|<``HCID;YFc5Kq6*97#DeT#TW6RLM}liM5(_>ThY6i z0ny~MoB|xq{{3%UkTRt%q>mUe5tIuVp@=lNCL(^t&NSj#=Y+;{%O=pC>Lkx4u#l-! zSY$oZiY=h($A z6q=ufYlrFIK);hb-R8j{s3db7%ysnE^GWBC-wic>-pkY^ZeJZSN;djYTe0yh|51i zSA6q3XTN&fwaWy3E^}qVS6{no$XEM$xzAU<`?Ky}#qL}72{C=w+gJpdt|eg+x=sm; z&~7E^<)r&(lY@RYvC+3WFqB Mw0vRg{I&c37gFB4tN;K2 literal 0 HcmV?d00001 From 20ddbe89d300897ac2a62bde01fb0ab736badda3 Mon Sep 17 00:00:00 2001 From: Igor Magdich Date: Tue, 28 Nov 2023 19:25:54 +0200 Subject: [PATCH 3/4] add test build script --- package.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a565d4c..7ba920d 100644 --- a/package.json +++ b/package.json @@ -24,23 +24,22 @@ "files": [ "/out" ], - "engines": { - "node": ">=16.0.0" - }, "scripts": { - "build": "npm run clean && npm run tsc", + "prebuild": "npm run clean", + "build": "tsc --pretty --project tsconfig.prod.json", + "build:test": "tsc --pretty --project tsconfig.test.json", "clean": "npx rimraf ./out ./coverage ./test-results", "docker:build": "docker build --compress -t test-pdf-to-png-converter .", "predocker:run": "npm run clean", "docker:run": "docker run --rm -it -v $PWD/test-results:/usr/pkg/test-results test-pdf-to-png-converter", + "predocker:test": "tsc --project tsconfig.test.json", "docker:test": "mocha", "license-checker": "npx license-checker --production --onlyAllow 'MIT; MIT OR X11; BSD; ISC; Apache-2.0; Unlicense'", "lint": "eslint .", "lint:fix": "npm run lint -- --fix", - "pretest": "npm run clean && npx tsc --project tsconfig.test.json", + "pretest": "npm run clean && npm run build:test", "test": "mocha", - "test:docker": "npm run docker:build && npm run docker:run", - "tsc": "tsc --pretty --project tsconfig.prod.json" + "test:docker": "npm run docker:build && npm run docker:run" }, "dependencies": { "canvas": "^2.11.2", @@ -59,5 +58,8 @@ "png-visual-compare": "^1.2.0", "ts-node": "^10.9.1", "typescript": "^5.3.2" + }, + "engines": { + "node": ">=16.0.0" } } From 94eae98c5ce7c62aa2b3f4d8884a52eb7d726750 Mon Sep 17 00:00:00 2001 From: Igor Magdich Date: Thu, 14 Mar 2024 19:47:07 +0200 Subject: [PATCH 4/4] update pdfjs-dist to 4.0.379 --- __tests__/props.to.pdf.doc.init.params.ts | 40 +- package-lock.json | 454 +++++++++++++--------- package.json | 20 +- src/props.to.pdf.doc.init.params.ts | 5 +- 4 files changed, 310 insertions(+), 209 deletions(-) diff --git a/__tests__/props.to.pdf.doc.init.params.ts b/__tests__/props.to.pdf.doc.init.params.ts index 005cdd4..0b0f35b 100644 --- a/__tests__/props.to.pdf.doc.init.params.ts +++ b/__tests__/props.to.pdf.doc.init.params.ts @@ -1,16 +1,20 @@ import { expect } from 'chai'; import { test } from 'mocha'; +import { resolve } from 'node:path'; import { DocumentInitParameters } from 'pdfjs-dist/types/src/display/api'; import { propsToPdfDocInitParams } from '../src/props.to.pdf.doc.init.params'; import { PdfToPngOptions } from '../src/types/pdf.to.png.options'; +const cMapUrl: string = resolve('./node_modules/pdfjs-dist/standard_fonts/'); +const standardFontDataUrl: string = resolve('./node_modules/pdfjs-dist/cmaps/'); + const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitParams: DocumentInitParameters }[] = [ { id: 'props undefined', expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: false, @@ -22,9 +26,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa id: 'props are empty', props: {}, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: false, @@ -38,9 +42,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa viewportScale: 15, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: false, @@ -54,9 +58,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa disableFontFace: false, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: false, useSystemFonts: false, @@ -70,9 +74,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa useSystemFonts: true, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: true, @@ -86,9 +90,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa pdfFilePassword: '12345', }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: false, @@ -102,9 +106,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa verbosityLevel: 1, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 1, disableFontFace: true, useSystemFonts: false, @@ -118,9 +122,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa enableXfa: true, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 0, disableFontFace: true, useSystemFonts: false, @@ -143,9 +147,9 @@ const testDataArray: { id: string; props?: PdfToPngOptions; expectedPdfDocInitPa verbosityLevel: 2, }, expectedPdfDocInitParams: { - cMapUrl: '../node_modules/pdfjs-dist/cmaps/', + cMapUrl, cMapPacked: true, - standardFontDataUrl: '../node_modules/pdfjs-dist/standard_fonts/', + standardFontDataUrl, verbosity: 2, disableFontFace: false, useSystemFonts: true, diff --git a/package-lock.json b/package-lock.json index 2078a6f..e2564d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,21 +10,21 @@ "license": "MIT", "dependencies": { "canvas": "^2.11.2", - "pdfjs-dist": "^4.0.269" + "pdfjs-dist": "^4.0.379" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.12", "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "chai": "^4.3.10", + "@types/node": "^20.11.27", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "chai": "^4.4.1", "chai-as-promised": "^7.1.1", - "eslint": "^8.54.0", - "mocha": "^10.2.0", + "eslint": "^8.57.0", + "mocha": "^10.3.0", "png-visual-compare": "^1.2.0", - "ts-node": "^10.9.1", - "typescript": "^5.3.2" + "ts-node": "^10.9.2", + "typescript": "^5.4.2" }, "engines": { "node": ">=16.0.0" @@ -76,9 +76,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -98,29 +98,73 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -135,15 +179,15 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -244,9 +288,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", + "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", "dev": true }, "node_modules/@types/json-schema": { @@ -262,31 +306,31 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.11.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.27.tgz", + "integrity": "sha512-qyUZfMnCg1KEz57r7pzFtSGt49f6RPkPBis3Vo4PbS7roQEDn22hiHzl/Lo1q4i4hDEgBJmBF/NTNg2XR0HbFg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", - "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", + "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/type-utils": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/type-utils": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -302,8 +346,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -312,15 +356,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", - "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4" }, "engines": { @@ -331,7 +375,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -340,13 +384,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", - "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1" + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -357,13 +401,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", - "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", + "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/utils": "6.13.1", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/utils": "7.2.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -375,7 +419,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -384,9 +428,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", - "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -397,16 +441,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", - "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -424,17 +469,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", "semver": "^7.5.4" }, "engines": { @@ -445,16 +490,16 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", - "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/types": "7.2.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -477,9 +522,9 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -498,9 +543,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -640,12 +685,12 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -702,9 +747,9 @@ } }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -982,9 +1027,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -1003,16 +1048,16 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -1085,6 +1130,28 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -1191,9 +1258,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -1263,9 +1330,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fs-minipass": { @@ -1347,19 +1414,19 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, "dependencies": { "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" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1377,10 +1444,22 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1454,9 +1533,9 @@ } }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -1758,14 +1837,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { @@ -1811,9 +1894,9 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -1823,13 +1906,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -1844,19 +1926,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/minimatch": { @@ -1898,21 +1967,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -2102,9 +2159,9 @@ } }, "node_modules/pdfjs-dist": { - "version": "4.0.269", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.0.269.tgz", - "integrity": "sha512-jjWO56tcOjnmPqDf8PmXDeZ781AGvpHMYI3HhNtaFKTRXXPaD1ArSrhVe38/XsrIQJ0onISCND/vuXaWJkiDWw==", + "version": "4.0.379", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.0.379.tgz", + "integrity": "sha512-6H0Gv1nna+wmrr3CakaKlZ4rbrL8hvGIFAgg4YcoFuGC0HC4B2DVjXEGTFjJEjLlf8nYi3C3/MYRcM5bNx0elA==", "engines": { "node": ">=18" }, @@ -2279,6 +2336,45 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2322,9 +2418,9 @@ ] }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2509,21 +2605,21 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -2606,9 +2702,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 7ba920d..aa06eba 100644 --- a/package.json +++ b/package.json @@ -43,21 +43,21 @@ }, "dependencies": { "canvas": "^2.11.2", - "pdfjs-dist": "^4.0.269" + "pdfjs-dist": "^4.0.379" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.12", "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "chai": "^4.3.10", + "@types/node": "^20.11.27", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "chai": "^4.4.1", "chai-as-promised": "^7.1.1", - "eslint": "^8.54.0", - "mocha": "^10.2.0", + "eslint": "^8.57.0", + "mocha": "^10.3.0", "png-visual-compare": "^1.2.0", - "ts-node": "^10.9.1", - "typescript": "^5.3.2" + "ts-node": "^10.9.2", + "typescript": "^5.4.2" }, "engines": { "node": ">=16.0.0" diff --git a/src/props.to.pdf.doc.init.params.ts b/src/props.to.pdf.doc.init.params.ts index 34f8297..fd12421 100644 --- a/src/props.to.pdf.doc.init.params.ts +++ b/src/props.to.pdf.doc.init.params.ts @@ -1,3 +1,4 @@ +import { resolve } from 'node:path'; import * as pdfApiTypes from 'pdfjs-dist/types/src/display/api'; import { PDF_TO_PNG_OPTIONS_DEFAULTS } from './const'; import { PdfToPngOptions } from './types/pdf.to.png.options'; @@ -9,9 +10,9 @@ import { VerbosityLevel } from './types/verbosity.level'; * @returns The resulting `pdfApiTypes.DocumentInitParameters` object. */ export function propsToPdfDocInitParams(props?: PdfToPngOptions): pdfApiTypes.DocumentInitParameters { - const cMapUrl = '../node_modules/pdfjs-dist/cmaps/'; const cMapPacked = true; - const standardFontDataUrl = '../node_modules/pdfjs-dist/standard_fonts/'; + const cMapUrl: string = resolve('./node_modules/pdfjs-dist/standard_fonts'); + const standardFontDataUrl: string = resolve('./node_modules/pdfjs-dist/cmaps'); const pdfDocInitParams: pdfApiTypes.DocumentInitParameters = { cMapUrl, cMapPacked,